perm filename UUO.ME[S,DOC]5 blob sn#252461 filedate 1976-12-04 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00371 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00050 00002	                      SECTION 1--INTRODUCTION
C00066 00003	                 1.1  UUOs (Un-Used Operation codes)
C00071 00004	                         1.2  Extended UUOs
C00074 00005	                        1.3  CALLs and CALLIs
C00078 00006	               1.4  UUO Trapping and User-Defined UUOs
C00082 00007	                     1.5  DEC vs. Stanford UUOs
C00083 00008	                   1.6  Understanding this Manual
C00087 00009	                  SECTION 2--GENERAL INPUT/OUTPUT
C00091 00010	                       2.1  User I/O Channels
C00094 00011	                           2.2  Data Modes
C00102 00012	                    2.3  Dump Mode Command Lists
C00107 00013	                          2.4  Buffer Rings
C00112 00014	                            2.5  Buffers
C00115 00015	                     DIAGRAM OF A 2-BUFFER RING
C00120 00016	                     2.6  Device I/O Status Word
C00130 00017	                             2.7  Files
C00134 00018	                     UFDs--User File Directories
C00137 00019	                     Disk File Protection System
C00145 00020	                    Disk Project-Programmer Names
C00148 00021	DSKPPN          [OP=047, ADR=400071]  CALLI 400071
C00151 00022	                     2.8  Initializing a Device
C00156 00023	INIT            [OP=041]
C00160 00024	OPEN            [OP=050]
C00162 00025	                    2.9  Setting Up Buffer Rings
C00165 00026	INBUF           [OP=064]
C00166 00027	OUTBUF          [OP=065]
C00167 00028	UINBF           [OP=704]
C00169 00029	UOUTBF          [OP=705]
C00170 00030	BUFLEN          [OP=047, ADR=400042]  CALLI 400042
C00172 00031	                         2.10  Opening Files
C00174 00032	LOOKUP          [OP=076]
C00182 00033	ENTER           [OP=077]
C00191 00034	RENAME          [OP=055]
C00197 00035	                           Read-Alter Mode
C00201 00036	            Disk Error Codes for LOOKUP, ENTER and RENAME
C00205 00037	                       2.11  Transferring Data
C00206 00038	IN              [OP=056]
C00209 00039	INPUT           [OP=066]
C00210 00040	OUT             [OP=057]
C00214 00041	OUTPUT          [OP=067]
C00215 00042	WAIT            [OP=047, ADR=10]  CALLI 10
C00217 00043	                        2.12  Terminating I/O
C00218 00044	CLOSE           [OP=070]
C00222 00045	RELEAS          [OP=071]
C00224 00046	REASSI          [OP=047, ADR=21]  CALLI 21
C00226 00047	               2.13  Saving and Restoring I/O Channels
C00228 00048	IOPUSH          [OP=724]
C00230 00049	IOPOP           [OP=725]
C00232 00050	IOPDL           [OP=726]
C00236 00051	                    2.14  Random Access to Files
C00240 00052	USETI           [OP=074]
C00242 00053	USETO           [OP=075]
C00244 00054	UGETF           [OP=073]
C00246 00055	                2.15  I/O Status Testing and Setting
C00247 00056	GETSTS          [OP=062]
C00248 00057	SETSTS          [OP=060]
C00249 00058	STATZ           [OP=063]
C00251 0@`jr∪M)β)≡@@@@@@@@↓7∨ z@lc:~)ε``dTd@``β↓Y@&≤B:NR~↓↓↓↓α↓↓↓↓¬Z>Au;	Zt4T→AAI+1↓AAβ1D&∩-2∞"Iα↓↓↓↓α↓↓↓α\zAuA#91αε%⊃uRuαα∞ε2dI↓P4T→AAI3	↓AAβ1H&∩-2VN∃α↓↓↓↓α↓↓↓α\zAuA#91αε%⊃uQAβ↓UFuαα∞ε2dI↓QAβ↓UD4T→AAI31↓AAβ1L&Bt
6∃↓α↓↓↓↓α↓↓↓α\zAuA#91αε%⊃uQAβ↓A↑uαα∞ε2dI↓QAβ↓A\4T→AAI3A↓AAβ1P&∩-2:V5α↓↓↓↓α↓↓↓α\zAuA#91αε%⊃uQAβ	ARuαα∞ε2dI↓QAβ	AP4T→AAI;↓↓AAβ1T&R%J&>Mα↓↓↓↓α↓↓↓α\zAuA#91αε%⊃uQAβ↓ERuαα∞ε2dI↓QAεβ β"PfεMlDε
Fa(λλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧∀q0jI3sHε5+5∃∀∩3T
Zsu*J∃5β!(lFvhεεMb(∧∧λλλ∧∧λλλ∧∧λλλ∧∧kL$∧∃∃⊗$λ8z≠m≥Yh_-lλ∪⊃D	;\y..~;{AQPlε&n(εε
Nα$∧λλλ∧∧λλλ∧∧λλefHλ⊂m|→<h
,=≥<Ml9λ→M}H⊂z≡X8⎇↑\h∃∂≡→9β!(lGεh_≠≤DPλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂→WP⊂**⊗jjgFB!X_→∞~⊂__≠X∧j∃,jjgH⊂⊂⊂⊂λ⊂⊂⊂⊂⊗gh≡X
XnFE⊂X_→≤
P___
XDdg⊂d)+Pλ⊂⊂⊂⊂λ⊂⊂⊂-Sh≡X~LV⊂ aOX.P⊂∃*,jjSP_⊗εB!X_→∞≠⊂__≠Y∧gUj!d)λ⊂⊂⊂⊂λ⊂⊂⊂⊂⊗gh≡X
XV⊂ P↑XnPλ**,jUgP_VβE!X_≤≠P__≠YDRg!d)∀P⊂⊂⊂λ⊂⊂⊂⊂λ-gh≡L~XV⊂⊂a↑Y.H⊂**,UjgP→εE!X→≤≤⊂__≠Zαgjj)U)⊂⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂X~XVλ a↑YWP⊂**⊗jjgPVεE!L_→≤≤H___≠MDdg!R+f⊂⊂λ⊂⊂⊂⊂λ⊂⊂-gT≡X~XK⊂ a↑M.P⊂*∃,jjgH~⊗εE⊂X_→≤LP___
[∧dg⊂d)f⊂λ⊂⊂⊂⊂λ⊂⊂⊂-Sh≡X~LV⊂ aOZnP⊂∃*,jjSP~VεB!X_→∞Y⊂__≠[DcQj&$gλ⊂⊂⊂⊂λ⊂⊂⊂⊂⊗gh≡X
XV⊂ P↑[.Pλ**,jUgP≠⊗βE!X_XY⊂__≠\∧Tbj&$S⊂⊂⊂⊂λ⊂⊂⊂⊂λ-gh≡L~XV⊂⊂a↑[nH⊂**,UjgP≠KεE!X→XZ⊂__≠\Bi"iaPg⊂⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂X~XVλ a↑XL.P⊂*∃,jjgH_X⊗εB!X_→L[P__≤_∧aS)!#$H⊂⊂⊂⊂λ⊂⊂⊂⊂⊗gh≡X
XV⊂ P↑XXnH⊂**,UjgP_LVεE!L_→X\λ___≤Daf)⊂#'P⊂λ⊂⊂⊂⊂λ⊂⊂-gT≡X~XK⊂ a↑LY.P⊂∃*,jjSP_Y⊗βE!X_X\P__≤→∧Rg)edT⊂⊂⊂⊂λ⊂⊂⊂⊂λ-gh≡L~XV⊂⊂a↑XYWP⊂**⊗jjgPYVεE⊂X__β20 00@pf∪∪9/β∪(@@@@@@@Am∨ z`TbXAβzbi:A))3U+≡@bPX~∃ε@`fdd```pP∪')¬π(@@@@@@@A7∨@z`jb0AβεzDk:@AQ)3++<@bjX4∃ε``Ldp@`@`pj∪Q)%β⊂@@@@@@@@↓7∨ z@jbXA¬εzbmt@A))e++≡@DlX~∃``ffP@````l∪∨+Q
∪,@@@@@@@A7= z`jDXAβεtbo:@↓))3+U≡@bn0~∃ε`@ffl@@``pn$@@@@@@@@@@@@@@@@@f\hA≠Sg
KYYC9K←kf↓))2AU+∨f~)ε``fLn@``@pp∪)Q3≠&@@@@@@@Am∨ z`PnXAβ⊃$zh`@`ho:Aπβ→1∩@h`@`hn~)ε``fPd@``β↓ad&u*26⊗~↓↓↓↓α↓↓↓↓¬Z>Auβ!]1α"IuQβ↓EERj↓α∞εdb%↓Qβ↓EEPhR
AA6C*βεεβK~9d,:tααα∧∧ααα∧4⎇βVεC:bλ_E∪kFεββ3;Tα∧≤→IDJβFεββ31Q$≠βε6C:βεεβKλ__5$≤
$ααα∧∧ααα∧4⎇βVεC:bλ_E∪kFεββ[Tα∧≤→IDJβFεββQQ$≠βε6CBβεπ⊗B5∃~rtλ∧∧λλλ∧∧λλ⊗iz∂,
εuλ⊂1
'-ε⊗-W(∧λp3∪	∀
ε⊗-C"H6m&∧π⊗b5∃→SpH∧∧λλλ∧∧λλ⊗iz∂,
εuλ⊂1
'-ε⊗,w(∧λp3∪	∀
ε⊗,c"H6m&$π⊗α0u	JHλλ∧∧λλλ∧∧λλ⊗iz∂,
εuλ⊂1
'-εε7(∧λp3∪	∀
εε#"H6↓ZM⊂__095	GETLN           [OP=047, ADR=34]  CALLI 34
C00355 00096	                        3.5  Pseudo-Teletypes
C00360 00097	                               PTYUUO
C00361 00098	PTYUUO          [OP=711]
C00363 00099	                        Doing PTYUUOs to TTYs
C00366 00100	PTYGET          [OP=711, AC=0]  PTYUUO 0,
C00368 00101	PTYREL          [OP=711, AC=1]  PTYUUO 1,
C000εXr@``D`d∪!Q∪
%
@@@@@@@Am∨ znDbXAβze:@↓!)3+U≡@dX4∃ε``Lnb@`@b`f∪A)∨π≥P@@@@@@@@↓7∨ z\bbXA¬εzg:A!)3U+≡@f0~∃ε`@fnd@@`b`h%!)%λE&@@@@@@@A7∨ tnbbX↓βεzit@A!)e++≡@PX~∃ε@`fnh``b`T∪!)%⊂c.@@@@@@@A7∨@znbb0AβεzU:@A!Q3++≡jX~∃``fnX@``b@l∪!)]$c&@@@@@@@A7= znbDXAβεtm:@AA)3++<@lX~)ε``f``@``D`n∪!Q/$c.@@@@@@@Am∨ znDbXAβzo:@↓!)3+U≡@nX4∃ε``Lpd@`@b`p∪A)%	&@@@@@@@@↓7∨ z\bbXA¬εzbat@A!)e++≡@D`X~∃``fpP@``b@r∪!)]%&n@@@@@@@A7= znbDXAβεtbc:@↓!)3+U≡@bb0~∃ε`@fpl@@`bb`%!)/%Lr@@@@@@@A7∨ tnbbX↓βεzbI:@A!Q3++≡bdX~)ε``f`r@``Dbb∪!Q∂)_@@@@@@@Am∨ znDbXAβzbg:A!)3U+≡@bLX~∃ε@`frb``bbH∪!)'∃)_@@@@@@@A7∨@znbb0AβεzDi:@AA)3++<@bhX4∃ε``Lrf@`@bbf∪A)→∨β⊂@@@@@@@@↓7∨ z\bbXA¬εzbkt@A!)e++≡@DjX~∃``fr`@``bDh∪!))∨¬0@@@@@@@A7= znbDXAβεtbm:@↓!)3+U≡@bl0~∃ε`@h`h@                SECTION 4--DISPLAY OUTPUT
C00407 00116	                          4.1  III Displays
C00Pbb@`β↓EE\J↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓Qs⊃↓α∪∂#¬α∪O≠
α∪O≠C3πO_4*
β↓QE]β↓AEE@I↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓β!9M↓¬βπ∨∃¬βK';&+Iα7∞s'CWfS'?ph*
Aβ!Ee↓β↓EEdMαB&>"↓↓↓↓α↓↓↓↓ααn>Ak9AJthR
AA#⊃A↓Aβ	I@&¬αN⊗1α↓↓↓↓α↓↓↓↓¬Z>Au;↓I1α→uBuααBB&⎇!↓A0hR
AA#⊃M↓Aβ	ID&¬αε∞Qα↓↓↓↓α↓↓↓↓¬Z>Au;↓I1α→uFuααBB&⎇!↓E0hR
AA#⊃U↓Aβ	IH&%αfB>~↓↓↓↓α↓↓↓↓¬Z>Au;↓I1α→uJuααBB&⎇!↓I0hR
AA#⊃Y↓Aβ	IL&%αfN&R↓↓↓↓α↓↓↓↓¬Z>Au;↓I1α→uNuααBB&⎇!↓M0hR
AA#⊃a↓Aε∪∪ ~
¬∀,D∧ααα∧∧ααα∧4⎇βVvβ∩bλ_3k%T∧¬¬∧→zBβ"AQ$≠βεF3αβεε∪∪(~
∧Ltitααα∧∧ααα∧4⎇βVvβ∩bλ_3k-T∧¬¬∧→zBβ*AQ$≠βεF3*βεε∪∪0→HUM∧z4ααα∧∧ααα∧4⎇βVvβ∩bλ_3k5T∧¬¬∧→zBβ2AQ$≠βεF3:βεε∪∪8~
∧DdD∧ααα∧∧ααα∧4⎇βVvβ∩bλ_3k=T∧¬¬∧→zBβ:AQ$≠βεF3Jβεε∪∪@~
¬≥¬∀∧ααα∧∧ααα∧4⎇βVεC:bλ_E∪kFεββ{Tα∧≤→IDJβFεββqQ$≠βεFC
βεε∪∪H∀∧ααα∧∧ααα∧∧ααα∧∧αααεEc"α
.Vvv≥lr∧&≡>εf∂∀
β⊗}},⊗o_Q(3ββFF"ββε⊗3MZλtL⎇D∧ααα∧∧ααα9uβkvε5hh(6ββ#G∧βββ⊗6⊂M∧y→u"α∧∧ααα∧∧αα¬9zβk;⊗[PhT6εβ##∀εββ6!∃∧=8YBαα∧∧ααα∧∧α¬\zπS;UD∧≠VRα¬λy∀⎇"ε¬@hT6εβ#+∧εββ61∃∧<_:Bαα∧∧ααα∧∧α¬\zπS;UD∧≠V≠Rα¬λy∀⎇"ε∃@hT6εβ#+∀εββ6A∃∧<9J"αα∧∧ααα∧∧α¬\zπS;UD∧≠V+Rα¬λy∀⎇"ε%@hT6εβ#+$εββ6Q∀$%Zλrαα∧∧ααα∧∧α¬\zπS;UD∧≠V;Rα¬λy∀⎇"ε5@hT6εβ#+Dεββ6a∃∧<→hdzα∧∧ααα∧∧α¬\zπS;UD∧≠VKRα¬λy∀⎇"εE@hT6εβ#+dεββ6q∃-∧yZdjα∧∧ααα∧∧α¬\zπS;KQPT≠εεC+Bεεβ≠↓~U∧<ZhRαα∧∧ααα∧∧¬\⎇πVs≥QQ$≠βεFSJβεε∪≠H_J¬L≤J$ααα∧∧ααα∧4⎇βVvβ
hQ(3ββFf"ββε⊗CJ∧∧ααα∧∧ααα∧∧ααα∧∧ααβEfRα∧←∞G⊗
λL↔&
λM↔≡~λ=ε∞vl]G_h(6ββ#f4βββ⊗F⊂L$H9∧r∧∧ααα∧∧αα¬9zβkβFuB∧J'S#βεεc=j∧λ4dI∀β#βεεc8h(6ββ#g∀βββ⊗F Jα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧β"sd∧¬&FT
fN&]t¬∨>≡L6@h(6ββ#v4βββ⊗F0M4J9T
α∧∧ααα∧∧αα¬9zβkβFuB∧J'S#βεεs¬j∧λ4dI∀β#βεεsh(6ββ#⊗$βββ⊗F@Jα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧β"st∧¬&FTλ↔.&≥t¬∨>≡L6@h(6ββ#↔∧βββ⊗FPLJ9T
α∧∧ααα∧∧αα¬9zβkβFuB∧J'S#βε⊗∪¬j∧λ4dI∀β#βε⊗∪h(6ββ+π∀βββ⊗F`L∀XZααα∧∧ααα∧∧αα¬9zβkβFuB∧J'S#βε⊗∪
j∧λ4dI∀β#βε⊗∪λh(6ββ+⊗∀βββ⊗FpJα∧∧ααα∧∧ααα∧∧ααα∧∧αα¬8X5$Lydβ*jZZ¬∧-$
4,<XYe%_Q(3ββV⊗Bββε⊗C@J∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧
Wπε↑$¬≡.⎇\Vw"
∞&␈&\>FN}aQ$≠βεV∪:βεε∪#H∀∧ααα∧∧ααα∧∧ααα∧∧αβ*f∀α∧n≥=⊗v:≥f"∧=≥FfNlt¬≡.⎇\Vw'1Q$≠βεV#∩βεε∪+→I∀t]Z∧ααα∧∧ααα∧4⎇βVεC:bλ_E∪kFεββ∪;Tα∧≤→IDJβFεββ∪1Q$≠βεV#"βεε∪+λ~(Tl
∧∧ααα∧∧ααα∧4⎇βVεC:bλ_E∪k6{Rα∧8→DdJε6phT6εβ+∪tεββV!∀≤⎇(V"αα∧∧ααα∧∧α¬\zπSβ#uD∧%'VCββε⊗Ujαλ8∀dd∀εCββε⊗PhT6εβ+≠∧εββV1∀
%J8T:α∧∧ααα∧∧α¬\zπSβ#uD∧%'VCββε⊗ejαλ8∀dd∀εCββε⊗`hT6εβ+≠4εββVA∀$-J8T:α∧∧ααα∧∧α¬\zπSβ#uD∧%'VCββε⊗ujαλ8∀dd∀εCββε⊗phT6εβ+≠TεββVQ∩αα∧∧ααα∧∧ααα∧∧ααβUf"α∧|↑G&Nluu≡/NM⊗v:
<V>n]nB¬∨L≡G/_Q(3ββV6bββε⊗S0M8ZE-=∧∧ααα∧∧ααα9uβkεFrb∧_J#k≠kTα∧≤→IDJβ6aPT≠εεS≠Bεεβ+q~Tu¬Z(Rαα∧∧ααα∧∧¬\⎇πVβ#:Dλ∀%∪VFββε+Rα∧8→DdJεFββε!PT≠εεS#
εεβ+↓~4-%
)rαα∧∧ααα∧∧¬\⎇πVβ#:Dλ∀%∪VFβββ&Rα∧8→DdJεFβββ&↓PT≠εεS#~εεβ+⊃~4-$iV"αα∧∧ααα∧∧¬\⎇πVβ#:Dλ∀%∪VFβββ6kRα∧8→DdJεFβββ6aPT≠εεS#*εεβ3↓~∧|LjJ2αα∧∧ααα∧∧¬\⎇πVs∃QQ$≠βεVC2βεε∪3λ~8T<t→Tααα∧∧ααα∧4⎇βVεC:bλ_E∪kFεββ≠{Tα∧≤→IDJβFεββ≠qQ$≠βεVC:βεε∪3⊂~8T<uYTααα∧∧ααα∧4⎇βVεC:bλ_E∪kFεββ∪≠Tα∧≤→IDJβFεββ∪⊃Q$≠βεVCBβεε∪3_∀∧ααα∧∧ααα∧∧ααα
8T≥$→ybβ2UXt-%I→d:⎇8ZE$Lht∧Ltiz$l
I→tph(6ββ+G∀βββ⊗f@Jα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧β0¬L(λλL=→<d;Yλ
M;9<aQPlεV,λεε-M"(H5⊃(∧∧λλλ∧∧λλλ∧st∂&ε
kλλ_∀O,&K(λ⊂h→∪∩(ε⊗β"Pfε
-,Dε-Fa1⊂6(9Uλλ∧∧λλλ∧∧λ⊗sjπ,

eD⊂1∀GV&ε↔(λλ83∪∩$ε&εβ"Pfε
-,dε-Fq5∩3(ZHλλ∧∧λλλ∧∧λ⊗sjπ,

eD⊂1∀GVLW(∧λp3∪	∀LC!(l
&Vλε⊗Nα3*:∩31$∧λλλ∧∧λλλ9t∂,εFkλ⊂(JO,LkTλ⊂p)I∩(F1"Plεε--(εε-N!_0pu	→(λλ∧∧λλλ∧∧⊗stπV

k∧λ1∀O&F,ε≠(λ⊂h→∪∩(εF,ε⊃"Plεε--Hεε-l↓~U3U	→(λλ∧∧λλλ∧∧⊗stπV

k∧λ1∀O&&w(λλ83∪∩$εMc"H6
-&t&v"(λ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧
KLD∧∩[xD	;Y[n-8=~-⎇C"Pfε
-.∧ε-f!0stHTλλλ∧∧λλλ∧∧λ⊗sjπ,

eD⊂1∀GV,7(∧λp3∪	∀,#!(l
&fλε⊗lb4	)pHλ∧∧λλλ∧∧λλλ9t∂,εFkλ⊂(JO,lTλ⊂p)I∩(f↓"Plεε-L(εε-m↓_q5∀
	Hλλ∧∧λλλ∧∧⊗stπV

k∧λ1∀O&&↔(λλ83∪∩$εMβ"H6
-F4&v"1q*IP3(∧∧λλλ∧∧λλ⊗iz∂,
εuλ⊂1
'-εεLW(∧λp3∪	∀
εεLC"H6α[
⊂__176	SETNAM          [OP=047, ADR=43]  CALLI 43
C00565 00177	SETCRD          [OP=047, ADR=400073]  CALLI 400073
C00567 00178	GETPRV          [OP=047, ADR=400115]  CALLI 400115
C00578 00179	SETPRV          [OP=047, ADR=400066]  CALLI 400066
C00581 00180	WHO             [OP=047, ADR=400112]  CALLI 400112
C00583 00181	SLEVEL          [OP=047, ADR=400044]  CALLI 400044
C00586 00182	RLEVEL          [OP=047, ADR=400054]  CALLI 400054
C00588 00183	                     6.3  Looking at the Monitor
C000
`r@``Dph∪≥¬≠∪≤@@@@@@@Am∨ z`PnXAβ⊃$zh`@`hg:Aπβ→1∩@h`@`hf~)ε```+IE↓Aβ	aT&T∩RNR~↓↓↓↓α↓↓↓↓¬Z>Auβ!]1α"IuQβ↓AENj↓α∞εdb%↓Qβ↓AELhR
AA3↓E↓Aβ	aX&≥:&R∞B↓↓↓↓α↓↓↓↓¬Z>Auβ!]1α"IuI¬i↓α∞b2%↓∪4*
β↓YAIβ↓AEa8J∞ε2dJQ↓↓α↓↓↓↓α↓αn>βiAQ]bαε∩Ik!AAA;"u↓α≤
22%β!AAA; 4*
β↓YAUβ↓AEa@JN⊗R¬⊃I↓↓α↓↓↓↓α↓αn>βiAQ]bαε∩Ik!AAA+∩u↓α≤
22%β!AAA+⊂4*
β↓YEIβ↓AEaHJ≡⊗R¬⊃I↓↓α↓↓↓↓α↓αn>βiAQ]bαε∩Ik!AAA+~u↓α≤
22%β!AAA+_4*
β↓YEQβ↓AEeJB⊗⊗Z↓↓↓↓α↓↓↓↓α↓αn>βiAQ]bαε∩Ik→Nu↓∧~ε22J↓ML4T→AAY1↓AAID%↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ααN⊗∞$J>9↓:i6&:$*I6*|⊃α6εLaαNf≥"⊗44T→AAYA↓AAIH&6J1↓↓α↓↓↓↓α↓↓↓α\zAu]αt4*≠↓AYEJ↓AAEK_%↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓]s	↓αO.s∪';:α7π'`h*
Aβ1IA↓β↓EePM~⊗:⊃α↓↓↓↓α↓↓↓↓ααn>Ak9EA1∧

uBj↓α6εLa↓A0hR
AA3⊃M↓Aβ	eT&≤ZBN⊗r↓↓↓↓α↓↓↓↓¬Z>Au;	A1α→uVuαα6ε&b↓U0Q(3ββf&Rββε↔∪0J∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααβuf"α¬,\6.Om≥f:∧\≥⊗`h(6ββ3&dβββ↔⊗pM=(:bαα∧∧ααα∧∧αα¬9zβk;⊗¬B∧7V∃jα	X∀Lbε∃@hT6εβ3∪tεββ↔↓∃≥∀:dααα∧∧ααα∧∧α¬\zπS;¬D∧≠V+Rα∧X→∀bβ%APT≠εεc∪Jεε↔."(∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧εkLh∧
→9:m≥Yh_.D∪8:-L[}→.1"PlεεLlλεεL↓~rt∪(Tλλλ∧∧λλλ∧∧⊗stπVl,∧λ0o,kTλ∪0)→λk↓QPlεfl(εεL"*9t∩∩)Tλλλ∧∧λλλ∧st∂&v,λλ_o-↔$∧∪02)D
β!(l
F6hε&B(∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧
q0u	→sH∞¬U4t⊂( bk`iλ&gb"CE!X_
~~P_→_→DH⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂∞↔_P⊂∀x0qr]py⊂*UgyFE⊂X_≠~
⊂__→~∧ih⊂k`i⊂λ⊂⊂⊂⊂λ⊂⊂⊂-Sh≡X~nFE!L_≠~≤λ__→_
Dih!UcgP⊂λ⊂⊂⊂⊂λ⊂⊂-gT≡X~≠K⊂ b)∂Z___→nP⊂⊂`f&$H~___→FE!L_≠~Yλ__→_
∧b$iSdiP⊂λ⊂⊂⊂⊂λ⊂⊂-gT≡X~≠K⊂ b)∂Z___~.P⊂⊂`f&$H~___~εE!L_≠~YH__→_
DP⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂)bPj$ggλ≤VVjTbi⊂$S*"i)∃h*)FB!X_≠
[⊂___≤∧Pλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ≤W_Pλ'2{V\z<v2H$w:2\9:x:≤FE!X≠≤≠⊂_→_≤Bdg*"S!⊂⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂X~≠Vλ b)≡M___→
nP⊂!Pf&$P
___→
FE!X≠≤≤⊂_→_Xαdg*'T&P⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂X~≠Vλ b)≡M___→
.P⊂!Pf&$P
___→
εE!X≠≤≤P_→_XBdg* PfP⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂X~≠Vλ b)≡M___→
nP⊂!Pf&$P
___→
FE!X≠≤X⊂_→_Yαdg*"S)P⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂X~≠Vλ b)≡M___→L.P⊂!Pf&$P
___→LεE!X≠≤XP_→_YBaf%dS*⊂⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂[X[nCE!X_
≤ZP_→_Z∧Q$ifdTP⊂⊂⊂λ⊂⊂⊂⊂λ-gh≡L~≠V⊂⊂b)≡Z__→~↔P⊂!`S&$P~__→~βE!X_
≤\⊂_→_ZDUk`djλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ-gh≡L~≠V⊂⊂b)≡Z__→Z↔P⊂!`S&$P~__→ZβE!X_
X→⊂_→_[∧Q"a)"PeP⊂⊂λ⊂⊂⊂⊂λ-gh≡L~≠V⊂⊂b)≡Z__→ZWP⊂!`S&$P~__→ZCE!X_
X~⊂_→_[DRk`djλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ-gh≡L~≠V⊂⊂b)≡Z__~_↔P⊂!`S&$P~__~_βE!X_
X~P_→_\∧Rbg!+H⊂⊂⊂⊂λ⊂⊂⊂⊂λ-gh≡L~≠V⊂⊂b)≡Z__~~WP⊂!`S&$P~__~~CE!X_
X≠⊂_→_\DRg*#bS⊂⊂⊂⊂λ⊂⊂⊂⊂λ-gh≡L~≠V⊂⊂b)≡Z__→YWP⊂!`S&$P~__→YCE!X_
X≠P_→→_∧Rg*$i∀P⊂⊂⊂λ⊂⊂⊂⊂λ-gh≡L~≠V⊂⊂b)≡Z__→Y↔P⊂!`S&$P~__→YβE!X_
X≤P_→→_DRg*&iRP⊂⊂⊂λ⊂⊂⊂⊂λ-gh≡MY_.FB!X_≠LXP__→→∧dSieijλ⊂⊂⊂⊂λ⊂⊂⊂⊂⊗gh≡[L_nFE⊂X_≠XL⊂__→→DdfTeaf⊂λ⊂⊂⊂⊂λ⊂⊂⊂-Sh≡[Y.FE!L_≠XYH__→→
∧dg*∃jgP⊂λP=723]
C00714 00225	INTDEJ          [OP=723, AC=0]  INTUUO 0,
C00716 00226	IMSTW           [OP=723, AC=1]  INTUUO 1,
C00717 00227	IWKMSK          [OP=723, AC=2]  INTUUO 2,
C00719 00228	INTDMP          [OP=723, AC=3]  INTUUO 3,
C00722 00229	INTIPI          [OP=723, AC=4]  INTUUO 4,
C00724 00230	IMSKCR          [OP=723, AC=5]  INTUUO 5,
C00725 00231	                      9.2  Old-style Interrupts
C00728 00232	APRENB          [OP=047, ADR=16]  CALLI 16
C00729 00233	SETPOV          [OP=047, ADR=32]  CALLI 32
C00731 00234	              SECTION 10--LIBRASCOPE FAST BAND STORAGE
C00736 00235	               10.1  Getting and Releasing Fast Bands
C00737 00236	UFBGET          [OP=047, ADR=400010]  CALLI 400010
C00740 00237	UFBGIV          [OP=047, ADR=400011]  CALLI 400011
C00741 00238	UFBCLR          [OP=047, ADR=400012]  CALLI 400012
C00742 00239	                10.2  Reading and Writing Fast Bands
C00743 00240	FBREAD          [OP=706]
C00746 00241	FBWRT           [OP=707]
C00748 00242	                 10.3  Miscellaneous Fast Band UUOs
C00749 00243	UFBPHY          [OP=047, ADR=400055]  CALLI 400055
C00751 00244	UFBSKP          [OP=047, ADR=400056]  CALLI 400056
C00752 00245	FBWAIT          [OP=047, ADR=400057]  CALLI 400057
C00753 00246	UFBERR          [OP=047, ADR=400060]  CALLI 400060
C00754 00247	                   SECTION 11--MISCELLANEOUS UUOS
C00755 00248	EXIT            [OP=047, ADR=12]  CALLI 12
C00757 00249	SLEEP           [OP=047, ADR=31]  CALLI 31
C00759 00250	RESET           [OP=047, ADR=0]  CALLI 0
C00765 00251	SWAP            [OP=047, ADR=400004]  CALLI 400004
C00775 00252	RUN             [OP=047, ADR=35]  CALLI 35
C00777 00253	TMPCOR          [OP=047, ADR=44]  CALLI 44
C00787 00254	TMPCRD          [OP=047, ADR=400103]  CALLI 400103
C00790 00255	UUOSIM          [OP=047, ADR=400106]  CALLI 400106
C00795 00256	WAKEME          [OP=047, ADR=400061]  CALLI 400061
C00799 00257	JOBRD           [OP=047, ADR=400050]  CALLI 400050
C00802 00258	LOCK            [OP=047, ADR=400076]  CALLI 400076
C00805 00259	UNLOCK          [OP=047, ADR=400077]  CALLI 400077
C00806 00260	SETDDT          [OP=047, ADR=2]  CALLI 2
C00807 00261	SPWBUT          [OP=047, ADR=400000]  CALLI 400000
C00809 00262	EIOTM           [OP=047, ADR=400005]  CALLI 400005
C00810 00263	LOGIN           [OP=047, ADR=15]  CALLI 15
C00813 00264	LOGOUT          [OP=047, ADR=17]  CALLI 17
C00814 00265	           SECTION 12--OBSOLETE OR OTHERWISE USELESS UUOS
C00816 00266	                           12.1  Old UUOs
C00817 00267	INTIIP          [OP=047, ADR=400031]  CALLI 400031
C00819 00268	USKIP           [OP=047, ADR=400041]  CALLI 400041
C00821 00269	LIOTM           [OP=047, ADR=400006]  CALLI 400006
C00822 00270	DDTIN           [OP=047, ADR=1]  CALLI 1
C00824 00271	DDTOUT          [OP=047, ADR=3]  CALLI 3
C00825 00272	GETCHR          [OP=047, ADR=6]  CALLI 6
C00826 00273	SETNAM          [OP=047, ADR=400002]  CALLI 400002
C00827 00274	SEGSIZ          [OP=047, ADR=400022]  CALLI 400022
C00828 00275	                         12.2  Useless UUOs
C00830 00276	             SECTION 13--INDIVIDUAL DEVICE DESCRIPTIONS
C00831 00277	               13.1  The Disk (DSK and new-style UDP)
C00837 00278	               Long Block LOOKUPs, ENTERs and RENAMEs
C00840 00279	                            Record Offset
C00844 00280	                    Disk I/O Status Word Summary
C00845 00281	                       MTAPE UUOs for the Disk
C00846 00282	MTAPE           [OP=072]
C00875 00283	                             13.2  TTYs
C00883 00284	                       13.3  The Line Printer
C00888 00285	                     LPT I/O Status Word Summary
C00891 00286	                            13.4  The XGP
C00893 00287	                             Video Mode
C00902 00288	                           Character Mode
C00919 00289	                     XGP I/O Status Word Summary
C00921 00290	                            XGP MTAPE UUO
C00922 00291	MTAPE           [OP=072]
C00937 00292	                             XGPUUO UUO
C00938 00293	XGPUUO          [OP=047, ADR=400075]  CALLI 400075
C00942 00294	                           13.5  Dectapes
C00944 00295	                   Dectape I/O Status Word Summary
C00947 00296	                         Old Dectape Format
C00951 00297	UTPCLR          [OP=047, ADR=13]  CALLI 13
C00952 00298	                        13.6  Magnetic Tapes
C00954 00299	                Magnetic Tape I/O Status Word Summary
C00957 00300	                    MTAPE UUO for Magnetic Tapes
C00958 00301	MTAPE           [OP=072]
C00961 00302	                   13.7  Paper Tape Punch/Plotter
C00966 00303	                       13.8  Paper Tape Reader
C00969 00304	                        13.9  User Disk Pack
C00973 00305	                         Old-Style UDP Usage
C00978 00306	ENTER           [OP=077]
C00980 00307	RENAME          [OP=055]
C00982 00308	                     UDP I/O Status Word Summary
C00983 00309	            13.10  The New AD & DA Converters (ADC, DAC)
C00991 00310	                   ADC/DAC I/O Status Word Summary
C00994 00311	                  MTAPE UUO for the ADC and the DAC
C00995 00312	MTAPE           [OP=072]
C01006 00313	                   13.11  The Old AD/DA Converter
C01015 00314	                     AD I/O Status Word Summary
C01017 00315	                          13.12  TV Cameras
C01032 00316	                     TV I/O Status Word Summary
C01033 00317	                           13.13  The IMP
C01042 00318	                               IMP I/O
C01052 00319	                             IMP MTAPEs
C01053 00320	MTAPE           [OP=072]
C01076 00321	                  13.14  The PDP-11 Interface: ELF
C01077 00322	                     ELF I/O Status Word Summary
C01080 00323	                 UUOs with Special Meanings for ELF
C01081 00324	USETI           [OP=074]
C01083 00325	USETO           [OP=075]
C01089 00326	UGETF           [OP=073]
C01091 00327	RELEAS          [OP=071]
C01092 00328	MTAPE           [OP=072]
C01096 00329	                13.15  The Voice Synthesizer (Voder)
C01098 00330	              13.16  The Cart Control Transmitter (CAR)
C01099 00331	                     The Cart Control Interface
C01106 00332	                           The Transmitter
C01109 00333	                  SECTION 14--SPECIAL I/O GADGETS
C01110 00334	                          14.1  The Dialer
C01111 00335	DIAL            [OP=047, ADR=400117]  CALLI 400117
C01119 00336	                     14.2  III Display Processor
C01120 00337	                           TSS Instruction
C01124 00338	                           LVW Instruction
C01128 00339	                           SRW Instruction
C01130 00340	                           CHR Instruction
C01132 00341	                           JMP Instruction
C01133 00342	                           HLT Instruction
C01134 00343	                           JMS Instruction
C01138 00344	                           JSR Instruction
C01140 00345	                          SAVE Instruction
C01142 00346	                          REST Instruction
C01144 00347	                           SEL Instruction
C01146 00348	                   14.3  Data Disc Display System
C01150 00349	                              Text Word
C01153 00350	                            Graphics Word
C01155 00351	                          Halt Instruction
C01156 00352	                          Jump Instruction
C01158 00353	                            No Operation
C01160 00354	                            Command Word
C01176 00355	                        SECTION 15--EXAMPLES
C01177 00356	                    15.1  Example of General I/O
C01185 00357	                15.2  Example of Display Programming
C01194 00358	                  15.3  Example of Using Interrupts
C01199 00359	          APPENDIX 1--GENERAL INFORMATION ABOUT THE PDP-10
C01203 00360	                              PC Flags
C01208 00361	                            IOT-USER Mode
C01211 00362	                        Text Representations
C01213 00363	             Assembler Features Relevant to this Manual
C01215 00364	                     APPENDIX 2--JOB DATA AREA
C01234 00365	  APPENDIX 3--LOW CORE ADDRESSES OF USEFUL POINTERS IN THE MONITOR
C01269 00366	               APPENDIX 4--DEVICE DATA BLOCKS (DDBS)
C01278 00367	                APPENDIX 5--QUEUE NAMES AND NUMBERS
C01281 00368	                 APPENDIX 6--STANFORD CHARACTER SET
C01285 00369	                     APPENDIX 7--UUOS BY NUMBER
C01291 00370	
C01295 00371	                                INDEX
C01334 ENDMK
C⊗;
                      SECTION 1--INTRODUCTION


This document describes the  UUOs (monitor calls) available  to users
of  the  Stanford  Artificial  Intelligence   Laboratory  timesharing
system.  Additional information  relevant to the  use of the  UUOs is
contained in  the introductory section  and in the  appendices.  This
manual supersedes SAILON 55.3.

The reader is assumed to know the PDP-10 instruction set  and format,
data types  and assembly  languages.  However,  the aspects  of these
subjects that are relevant  to this manual are explained  in Appendix
1.   The user  who is  new to  the PDP-10  should read  that appendix
before going any further.   The experienced user may skip  to Section
1.6, UNDERSTANDING THIS MANUAL.
                 1.1  UUOs (Un-Used Operation codes)


UUOs are monitor calls which make use of instruction codes that would
otherwise be unused or illegal.  The opcodes from 000 to 077  are not
used by  any machine  instruction, and  opcodes from  700 to  777 are
input/output machine instructions, which are normally illegal in user
programs.  All these opcodes tp¬¬`Ai↑↓iQJA5←]Si=dXAo!SGPA
C\Ai!K\Ai¬WJ~∃]QCiKYKd@A¬GiS←8@AShAIKK5fACaAe←ae%CiJ\@A)C-S]N@↓CImC9iCOJA←LAQQSf~)gSik¬iS←\0AiQJ↓gsgi∃ZAIKMSO]CQKfAg=[JA←_AiQKMJA←a
←IKf↓i↑@A	JA[←9Si←d4∃GCY1fAM←HAGKeQCS\A
←[[←8AMk]
iS←]LAgkG ACfA$←≡\@↓)Qkf↓oQK]∃mKd@↓BA++<~∃Sf↓K]G←U]iKe∃HAS\AiQJ↓S]giIkGiS=\AgiIKCZXAiQJ↓[←]SQ←dASL@AGC1YKHAQ↑~∃KaKGki∀AiQJ↓Mk]GQS←\A
←eeKMa←]I%]N@AQ↑AiQ∀AaCeQSGkY¬dA++<\@@A]QK\AQQJ~∃→k]Gi%←\@A!CfAE∃K\@A∃qKGkQKHXA
←]ie=X@Ae∃ike]LAi↑@↓iQJ@↓kgKd↓ae←OICZ\~)'←[J↓++∨fA[Cr↓iCWJ↓gWS`AeKiUe]fv↓iQCh↓SfX@↓G←]iI←XAI=Kf@A9←hAC1oCsf4∃eKiUe\@A¬h@Ai!J@AS9giek
iS←\AS[[∃ISCi∃Yr@A→←YY←]S]N@↓iQJ@A++≡0@AEkP~∃g←5KiS[∃f@ACP@A←]∀A←L@↓iQJ@↓]Kqh↓S]giIkGiS=]f@A¬MiKdAiQCP@A←]∀\@A)!J~∃S9ISmS⊃kCX@↓oeSi∃kaf@↓KqaY¬S\@A]QK\@↓B@A+U≡@Ag-SafvAk]Y∃gfA←QQKeo%gJ~∃⊃KgGe%EKHX↓B@A+U≡OfAIKike8ASf@↓CYoCefACh↓iQJ@↓S]giIkGiS=\AS[5KISCQKYr~)M←YY=oS]N↓iQJAU+≡\~(~∃'←5J@A+U∨fAi¬WJ@A¬eOk[∃]ifA=d@Ae∃ike\↓mCYk∃f@AS8Ao←e⊃f@AS8@As←UdAG←IJ~∃S5COJ\A∪\@↓gkGP↓GCgKL@AiQ∀Ao←e⊃f@AG¬\AEJACGGU[kYCQ←ef@!βπfR0@AEkPAB~∃	Y←GVA←LAMkGP@↓o←eIL@A[kMhA]←P@AKqQK]HA	Ks←]⊂@AiQ∀@AYCMhACG
k[kY¬i←d~(Q←Gi¬X@bn$@AEK
CkgJ↓o←eIL@d`@↓iQe←UOP@f\AS\@↓BAkg∃dOfA
←eJ@↓S[CO∀ACeJ4∃kgK⊂AEr@↓iQJAMsgiK4@AM←HAgaK
SCX@↓iK[a=eCer↓gi←e¬OJ@A=LAgKQf@A←_Aβπf8~∀Q/=eIf@P`@Ai!e←kO @bfn↓CeJ@↓kgKH↓ErAi!J@AgegiKZ↓i↑@AMi←eJ↓S]M←I[CiS=\~∃C	←khAQQJAU=D\@AQQSfAACehA=L@AB↓G←eJ↓S[CO∀ASfAIKMKeIKHAi<ACf@↓iQJA)←D~∃⊃CiBA¬eKBv↓iQJA⊃CiBAMi←eK⊂AQKe∀ASfA⊃KgGe%EKHA%\AβaAK]IS`@d\R4∀~∃≥=iJAC1g↑Ai!ChAg=[JA+U∨f@A!CmJAU]kgK⊂ACeOU[K]h↓MSKY⊃f\@AMkGP@↓BAMS∃YH~∃MQ←kY⊂AEJA5CIJAiKe↑AM↑AiQ¬hASL↓ChAg=[JAY¬iKdAQS[JA%hAEK
←[Kf↓kgKH↓M←d~)BA]K\AMKCQkeJX↓C\A←1HAae=OeCZ↓kgS]≤AiQCPA++≡↓oSYX↓giSY0Ao←`⊗Y84(hRO?7*β?→β&C∃↓β␈β∂?∪/→β;?"β∪↔≠Ns↔⊃β↔I↓βSF)βOg∨#↔5β∂∪∃βπ6'3π⊗c∃↓β&yβS#(h+WO/⊃↓β≠␈⊃β∪↔6K;';:↓β#'~↓β?←rβOC↔≡Kπ1↓πβWKC␈≠∃αV,{M9↓ααS#∃αβ7↔SF{⊃β≠␈⊂4+∪.3';'v9βS#/≠∃αV,{Mβ'~↓β↔cεcπ';.!β'9¬≠↔∂SN{9↓Es!9↓αMε*α<↔&.⎇}&N/4
v0h-}ε≡}L↑2π&≡Bε∂,Tπ/≡\Dε6␈$
U,␈4↔⊗+!Q hR∧∧ααα∧∧βββ∧∧ααα≥G>∂≡4εNfL\v∞bAQ"αα∧∧αααεεβSε6rπ/<↑"n&\m⊗v∞-LR¬-Y}2`h$∧ααα∧∧αββFπ#β;t∞7O∨L]Rn&\m⊗v.D∞&.?]L↔∩¬ZYw~`Q$ααα∧∧ααβvεβS;vtπ∨O>LVjnL\fNv\D∧L⎇D
U,␈5aPPh*Mε*∧→zB¬-Yz2ε∂,Tε∂6≥≥F∞⊗LTαε}mO∩π>]bπ&Tππ⊗|}&∞j
≡2∧tzDαεNd	∀⎇"ZZ4-⊂Q-V}&W4εNr∧	∀⎇"ZZ4-∩
]v&*∧∞FF/<Tε␈ε=|F/~∧↔⊂(≠8,=~;Y$∧∩+sd
;\⎇∞.8⎇~-⎇\c"M≥\⎇→,≤Hλλ∀≥<y.$≤≤[l}X;(∞⎇;≠λ∧
[⎇λ,(~;D	3u*Zq4H
]y→(∞][→<n4λ~=∧
_<c!,≠{Y$∧≤{{,↑~~;Ltλ≤|\z8;∧∧≥≠h∧y=λ
≥]≠h∧∞~_=∧∧≠;yUHλλλm|Hλ∀_{{.
→=→!QY>≤
L;X=
≥{H≠ld∩3u¬Z4q4D
;y→%D≤y9$λ<≤→-l~>λε∃C"C!(Z;X-M≡+λ∧(λλ∞>→8z,≥λλ→L\=≥<LTλ_;
M⎇|h∧∧≥~→$∧≥<y.$λ≥≠d∧λ~_.l(λ≠M}[8;↓Q\}<nL;+9\Z;Y,Dλ∃5)}h≥≤L≡λλ≥
t_(λ⎇=Y;D
≠xx.M;{H∧
;H≥
(λ≥.<<H≤∞-y|X-Q"Z;N>→89∧∧≠yH∧Y:;Ltλ→>\⎇=→,Dλ_↑$∞~→(∧∞}<⎇]+Hλ∧λ[|H∧→=_-≥≤hλ
|H≥~
≡c"YL\=≥<LUλ≤y,T≥~→$
53ti→(∃5)t≠{H∞9y(ε&-+C!                          1.2  Extended UUOs


In order to  define more UUOpε↓iQC\AiQKIJACe∀A←aG=IK`
αβπ[πNcπ3*aβS←xh+CKNkπKeεk↔S#}#Mβπ⊗)β↔7εc?g↔"βS#π"βπ33␈9β¬β≡K;∨3*β?C∂}#∃↓β&yβK↔π∪↔O↔w 4+7∞seβ∪N3≠↔K.sQαV,yβ≠Wv≠S'?w→9↓αMε*αm↔↔∨D
v2πMW≡*
\W&F|N2εO4∧π&z∞↑6(h.↓~T≥X;∞\(≠yD∞~→(≤x⎇;.]_=≠n$
⊂0e∀→Z9-Lλ~;D∞42P~w9z9≥qz4w[⊂:7P≤x2qtY<FE7[2P⊂7Y⊂→_⊂λ∀7qz_v∀P⊂≤7yytX62P*UgyP⊂→7y⊂⊂_P3t{→w⊂⊂7\1wr2K⊂⊂⊂*~:yV⊂→7yεE→|0vx≠2V⊂⊂≥42P'Uj)j)λ⊂*jgH∀;t4Xt⊂⊂:≡x2yP≠zz⊂⊂_w⊂ iPdm⊂⊂≤z94w→P⊂7wλ:42FB:2y6Zw0v∀H4yP4[;7urY⊂1<P≤x2qtY<tw3H:42P≠x1wr→P_~XH0w2⊂≥42P PP34r[2⊂→WβE*42\2P0y→P1zy≤2tεtly six opcodes that use the value of the AC field in
this manner.   Each of  these opcodes hapεABAO∃]KeS@A[]∃[←]SAh∂#N≠!04W#?∨↔&C↔I↓π;'S!ε	↓βOε+∂'≠N→β[πg+∃↓β6{IβSF)↓αε~β≠'↔f!1↓β≡9β*↓βWO.!βPεqQ&NvM≤6∂&T∩απ>V≡Nm≤2¬-Yubα∧≥dαε∞LM↔&N⎇eBε.≤=αε≡⎇\&Nv≡M⊗}r∧
v2ε|]f/⊗≤1PVnl]V}v≤4ε∞vD∞7ε.=≤fN~λ_2ε6≤]F"ε≡2ε
∞>ε.≡≤m⊗~ε]lVn}m≤2π>
≤6Bε≥N6zε<≥`hV,Tπ/≡\Dαπ&t
⊗v&≤<↔&*∞Mε*α
ZTzr∧	wε≡|LRββV∀αεF≡h∞M→(λ|;Y<M≤h≠;L];{Z,1"↓**⊗jjgVλ0w2⊂∃*,jjSP⊂;t]4⊂0wλ aP3~rv2⊂λ7s⊂→H40xβ the  specific mnemonic
OUTSTR.  P	!kfAi!JAM←1Y←oS9NAiQIKJAY%]KfA=LAG←⊃JACe∀AKck%mCYK9h\@@!β	$~)SfAC8@AC`⊗;W7↔w!β?→π##'MααVV=Zβ'Qβ∨β↔∂'6K↔M↓π##∃β∞#∪K↔∨→β?→αβS#∃∧
N∞&Ph+OS⊗K;≥β&yβ∃π#gC↔"β?WQrH4(4R↓↓↓↓α↓↓α zZE≥%$λ∀%⊂Q$ααα∧∧αα¬JK∃-,tε2dJ!PRα∧∧ααα∧εβ+⊗Fαbd_J hPQ)f␈&UDεF␈|↑f/∩D∞FF∂D
f␈"≥Fbε|dπ&FT
Vv.]⎇fN∨4↔⊂(~{M}{H_O∀_;≠∧∧≠yH∞M→#"L≡|y;,-→<\d∧≠|H≥≠λλ
|H≥~Tλ→→,.9yy..kHλλh23∧∧~≠⎇l↑Y<K∧y=≤d∧~=≤d
53c!-;Y;-⎇Z8hL9Z;M≡~;{N4→~<L\⎇≠≡$\[{$∧≥~→$∞}<⎇](_;LD≥~≥.4~<h∧;≥x/≡h≥<↓Q]≠hL=→+∧=Y;D
]<⎇∧9]→.$_(≠L↑h∃5)t~_<dY9;D9→→ →↔εEβ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂W→P⊂⊂`f&9H0w2⊂⊂`f&$\FEεEβE*42H9rqw[2⊂6r]47r⊂≠s⊂22Y4w4w→P6pw≡P*jg\P;tz~⊂:42H9pvrH7x1wY2P⊂4_yP:;[FE;2\9tww≤W⊂⊂$[⊂7w2H7s⊂:~2yrVλ:42P_r292\yP34Yv2⊂7Y⊂:42H*jgP≤7tw:≤P⊂:7H0FE;[y2⊂;Z4qt⊂_ww:0Zw9P:~2P9t↑14z⊂≠0vrP≠s⊂:4→P*jgH3:w1]4ww⊂λ22yt\2r↔⊂λ$wεE≥42P7]42y⊂≥2y9t[w⊗⊂:~2P0r→92yyH34rv→⊂7s⊂≥42P*UgP4yH4z9r[3⊂⊂:~2P7:[q2yεB7s⊂:~2P3:[1z4w[⊂22yZy2r↔λ⊂*42H7x1wY2P4wλ:42P→4y9zλ1pyrH4yP_
_⊂0w→⊂4z9CE6w2[ww4qH⊂4yP⊂`f&≥H⊂:42H7x1wY2P⊂4[⊂⊂:4→P9rq[w2⊂⊂_pyrP~yP⊂_
≠P⊂0[2⊂4z≤FE6w→vww4XP4yP⊂`f&$H∀37yλ!`f&λ$vvrY4pz2JWεE!Pf&⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂⊗gh≡X
_.FEVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVCE⊂⊂⊂λ⊂⊂⊂⊂⊂`f&⊂⊂aV-iRl!$jλ↔↑70[r←↔nCE!`f∪$P⊂⊂λ⊂⊂⊂⊂λ⊂⊂-gT≡X~≠WFE⊗VKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVFEλ⊂⊂⊂⊂λ⊂⊂!`S&$P PV≡7:[q2y∨βEεE"↑0qz6≡P⊂:4→P⊂9p[rP⊂*UgP3:[1z4w[9P⊂0\2P⊂0]0tv0X62P⊂≥497zYt⊂⊂:~2yrP≥;wFE≠rz47Y9W⊂⊂λ*4:yK⊂:42H⊂37v≠7{tw→P:;wH⊂64w→yP7sλ⊂1wr→P⊂0y→P3:w_z4ww_v6<FB2xzt]0v2w≥≥P2pXt⊂;t[6⊂1p]yrP2↑2qzz~ww⊂7Y⊂:42H"l$jλ*jgWβEεE⊂λ⊂⊂⊂⊂λ⊂!`f∪$P_YβE⊂⊂⊂λ⊂⊂⊂⊂⊂`f&⊂λ-idl⊂$j⊂↔Ql$j↔WFEεE∀tw1rH:42y→P⊂0y→P:42\rP⊂:≥wP;2\9tww≤P⊂7sλ1pv6~w3P⊂≥42P9XvrP⊂∃jgyVλ:42FB37v6≠{tw3H30qzλ⊂9t7]v2⊂1→P77z→r↔⊂⊂λ+t2wλ<wzP≥yrP⊂_P!`f∪⊂4w9]2pr⊂λ7s⊂0CE!`f∪$V⊂7≠z⊂7w≠<P27H<wzP≠2rr⊂_w⊂2|≥90P;[y2⊂4[⊂;t4Xt⊂:7H9z7y→P⊂:4→P70vYFE7sλ:42P⊂`f&⊂→:w1z~ww⊗⊂_:z⊂⊂_v9wP
0w2⊂≠wy2P~vx7y≥0w:6≡TP<w]P⊂37\1rP:~2FE9↑yz2vH:7P6≠wuP:\⊂:42H3:w1]4ww⊂λ70vrH4w⊂0H:0q6→P4w⊂≠y22yλ:7P⊂→4w2⊂≠zzεE≥42P3≥w1z4[w⊂7:[q2y↔λ⊂*44\P⊂6rXw9P:~0z⊂:\tw3P⊂`f&9H4w9z→pr⊂⊂≠s⊂!`S&$yFB1y2p]2yP0H9zq9]0w:4Xv⊂0v[zw:⊂λ7s⊂2↑:90P≥wy5P≥40z⊂_wzv2λ⊂12P_wvx6→z2v<CE0{7Zr2r↔λ⊂$w⊂_r24z~ww⊗⊂λ4z⊂4\P2pyZry⊂:≠P⊂:yYP!`f∪$yP4[9z2pY⊂⊂7sλ!`f&≤FE12XpzyrK⊂4w⊂λ# dfλ0w2⊂λ&`ai∪V⊂4sλ⊂<wzH:yrP≥42P⊂≠0vrP≠s⊂⊂0H!`f&λ⊂0yP_wεE7\1wr2K⊂:42H0x89≠x94p]2P!`S&$P;Zv6⊂1→P3rw→y0z2Y↔⊂⊂∀∩w⊂&`Pi'V⊂≠w6<P≥42FE⊃"aP!Pf&$yH⊂0y2H892r→s4w2Y↔∀P⊂λ#7y⊂→|0vx≠2V⊂⊂≥42P3≠v67{Zw3P⊂≥;wP6~w2yFB;tv6λ897r≥qrP:~2P9p[rP6pXt4w2H1wr2KεEεEλ⊂⊂⊂⊂λ⊂⊂!`S&$P_LεE⊂⊂λ⊂⊂⊂⊂λ"l$jβEεE*~:yP⊂≥42P!Pf&⊂⊂∃jgP⊂~yP2y\rw:4Xv6<Pλ7q9w[2z2]H4z⊂⊂~yP⊂6Yw:4w[2r⊂4→y2FE≠ptw6≡P37yλ1wvx≠2z2w→yyP9XurW⊂λ(62p\rP:yYP!`f∪$yPFBβ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ_W~⊂λ*jgP∃90x8~w3P0[2⊂*yYy⊗b2Y4w2rλ*jgyCEεEεB*42P≠rz47Y⊂⊂2v\67|rY⊂1<Pλ:42P∀"(⊗XL⊂:7Pλ:90xλ:7P⊂≥42P6[w4z7\⊂⊂;t→w⊂0wβE:w:\rr⊂7\1wr2H4yP2[1wzw≥2y2rλ4yP:~2P37[67{t[3]εEβE⊂⊂⊂λ⊂⊂_Wλ*42Pλ2s32Xz4{2H0r29→yyP⊂_pv1z[0z4w[⊂37yλ⊂:42H⊂4w9]9:qz~ww⊂4\FE⊂⊂λ⊂⊂⊂⊂λ⊂1py≤4rr⊂≠zz⊂0\P:yzXv⊂;t]4⊂:4→P0r2≤2yyP→4rv2⊂4w2→|⊂34Yv2⊂0[2εE⊂λ⊂⊂⊂⊂λ⊂⊂4w→4y2q]⊂14zλ4w⊂:~2P4w≤z9:q]4ww⊂_w2⊂4[⊂0w<H⊂;wy→9P92Y2y2w_rrεEλ⊂⊂⊂⊂λ⊂⊂⊂4[24y2Xz6<P_<P:4→P4w9]9:qz~ww↔εB⊂⊂⊂⊂λ⊂→↔⊂⊂4z9P⊂:7Pλ_Y⊂∀≠x1wr→P0w2λ aP⊂→4rv2
P7s⊂≥42P⊂~w9z9≥qz4w[⊂0xαe
         deposited in  bitpε`Ai↑@bdA=LAkg∃d@A←HA[←]%i←d@↓Y←GCQS←\@P`~∀@@@@@@@QI∃aK]I%]N@A=\AoQ∃iQKdAiQJ↓←aG←⊃J@Ae∃aeKg∃]ifA∧@Akg∃d@A←HAB~∀@@@@@@A[=]Si←HA++≡$\@A &C∃β∂∞c∂W3∂#↔⊃β.3≠↔∂&K[∃β∞#∪K↔∨→β≠K}i↓Eβ∞∪?[∀hQ↓↓↓α↓↓↓↓εKMβ∪/β?O'&+⊃β'w#=βO#M↓EBβS=↓≠)↓#π&#K↔O~β≠'↔f!%β?2↓βS#*βOπ7(h)↓↓α↓↓↓↓αβ3?∂∂#'?9β!A9↓∧∪'SMβ	M↓β&y↓E]αC';∪/Aβ≠'.c⊃βπv!↓β'v#'K↔∨!β'"H4)↓α↓↓↓↓α↓β?→π##'Mεc?∂π&K?9β∂∪∃β∂f+πK↔"p4)↓α↓↓↓↓~qαS#*β';O'∪W∂SN{9βπ"β3?∂∂#'?9β!E↓#/≠↔Iβ␈⊃β7?vKS?IεMβπ⊗{[∃%εKL4)α↓↓↓↓α↓↓βSF+9↓β/C↔∂W&+⊃↓↓FM↓βN1↓β≠⊗{5↓β∞q↓αb≥!↓β'w≠SKW∨#'?9Jq↓↓α&C'L4R↓↓↓↓α↓↓↓βf{∂πSN{9βW∨+π33J↓β∂?w#π';~β¬↓αU~Iβ'w≠SKW∨#'?9αβS=βW+7A↓π#=β∧hQ↓↓↓α↓↓↓↓π≠WK␈+S';*βS=βNsS↔Kπ∪↔Qβ&C∃αV,y9↓α&C∃α*≥⊃βOπ6+M↓β&C∃βC⊗{∨Kπhh)↓↓α↓↓↓↓αβ∂?Ww#↔I↓αC←#'≡A↓↓βε{';S~↓βS=αβS#∃α↓β';∨#KW∂&K?9↓εK77↔&KπS↔gH4)↓α↓↓↓↓α↓β≠?fc?←'v9βS#*αVV=J↓β≠?∩βK↔S/∪;';:βS=β&C∃↓βπ∪?∨K∞iβ∂?w#π';Ns≤4)α↓↓↓↓α↓↓βSF)αVVzp4(4U##WMbβ≠?Iε	βWO/⊃βS=ε#↔≠'v)β#'~β?←9¬*V?MαCO↔3.≠S↔⊃ε3K?5ε{C∂?&+M↓Aβ	βS<hQAM]Ja↓β#*β;↔↔"↓β?;gIβ∪↔ε{O'Qαβ¬α*≥⊃↓β?∩βO'7NcπI↓εK;OS↔+∂S'}q↓β'rβWO↔⊂h+3?≡S'?r↓QEβ&y↓β+.kAβSzβS#∃π≠WK␈+S';*↓βS#∂!β←'faβ';&+KCK/!↓β#O→βWO/⊂4*V,{M9↓¬##∃βNsOSK.≠S'?r↓β'9εc?∂π&K?9↓#	βO#␈+3⊃↓ε∪∃β?v)βS#∂!↓βO∂3↔Mβ&C∀4+π∪?∨K∞iβ∂?.sS↔Iε3?Iβ⊗+SWKvK;≥9αα≠?Iαβ';O&;∂∃εKQβ∂␈+3⊃β⊗)β¬↓¬αVN"Rβ'_4WK?UβF[∃β
βOSπ≡Y84(hR;?S+Q↓α.≠πWO address calculation  has  alreadp∩↓EKK\4∃G←[AYKiK⊂AErAQQJAi%[JAB↓++≡OLAMk]
iS←\↓SfAKaKGki∃HXAo!Ch@AQQJA[=]Si←H~∀Q←HABAkMKdOfA++≡↓G←IJ$AgKKL@AS\↓iQJA¬IIeKMfAMS∃YH@A=LABAU+≡@A%fAiQ%d∧4+.3≠↔∂&K[∃↓ε∪∪K/≠M9↓∧K9↓β&C∃↓α-*=β←⊗KS↔Wπ→↓β'rβS#'~↓β7πw+π11αβS#∃π#←<4V+cCK/≠O'?w→αR"*α⊗~~,~R&Z*αε∩∩∀*NMα|1αR"*αVV=ε;⊃α$B∃αε$"J⊗N~α~&⊗d!α>_hRR"∃ααVV=αβ7↔πr↓βS#*↓βOπn)βS#Ns≥1↓εsπ7↔gI1↓β&C'M↓ε3';πb↓β[πg+∃↓β}1βPεQPP9YY,>~=Y$9→≤L↑|h_l≥_⎇;≡~;{Ea"C"E	;H≥
(∀⎇≥Y[|LD≤}<nL;+λ∧
53|d∞≤X<∞
;Yh
≥]≠h∞M→(≠-⎇Z=≠n$λ_8nN8;≠∂∀→{c!.≠h_,.{{≥.L(-ε∧_;Y∧ε-(∞,=~→.$λ≥~≥H
∧;YλεF(_;∞M≠⎇9m∧≥<y.$λ∃5)}h→≠aQ]≤X.∧≥≠h∞↑y<HεFλ_;LD
+E⊃"@↓Dλλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧+M$∧⊃⊃0d∞\kH
>_;YM}Yλ∃*Y|c"AQC"U*Y|h≥m≡~λ≠n{y→.4
∧∞~≤[n\zλλεεmh_-lλ⊂p)I∩<↓P≥tz4⊂≠:vq2\9P⊂_λ:497]stεE
~⊂0y→P2yyYw:4p[6<P⊂≤z0w2_y2⊂"⊃aP*jSyP⊂6[r4s4Yr⊂37\⊂:yrH⊂0z⊂∀z0w3≠y2↔εB∀)wvYP⊂40]2P⊂1→rw⊂⊂λ6wr4Y4rr⊂λ1wvx≠2z2v≡P⊂7z]⊂⊂7sλ⊂⊂2|~yz2w_rW∀Pλ⊂*42CE2|1Yx:4w[9P0y→P:42H**,jUgyP∀≠x1wr→P_~XJP;tz~⊂ aP→4rv2≤P_Z⊂λ:497]st⊂_MFE0w→⊂:42H⊂)h!U`i⊂*UgP⊂∀≠x1wr→P_~→JV⊂;t~qt⊂⊂_y2P9\2qtp[⊂⊂)z_w37y→⊂*jg\WεE [6⊂7sλ:42Pλ$gj⊂∃jgyP
7x1wY2yP7]2y⊂⊂
X_∀P_w2⊂0[6⊂!`S&$xβ  wip	 A]k[	Kef~)Me←Zh```@`Ak`↓CeJA¬Yg↑AMaKGS¬XA'i¬]M←e⊂A++∨L\~∀_@@@@@@@@@@@@@@@b\l@↓+]IKIgiC]⊃S]NAQQSfA5C]kC0~∀~∀4∃∪\A∃CGPA=LAiQ∀AgKGQS←]f↓iQCh↓M←YY=nXAB↓G←YY∃GiS←8A←LAIKYC`&+⊃↓α-*?MβO_4+↔Gβ3π'v+⊃↓β∞c?;≥π;'S!αβS#∃π≠gOS.i↓β∂}s∂↔C'→β';6{3[↔"q↓↓απ∪↔∂↔&K;≥β&C∀4+}&O&↑↑αε6}$ε.∞=∧¬-,t↔⊗*ε∃∩ε

M⊗v*=vw&≥≥fNvt∞FF*
ZTz?4
Vv.]⎇fN∨4⊗v Q-g.n↑-⊗≡∞D6}&↑4αε∞lDβ∩J∀π≡∞↑
F*α∞↑6∞>T¬ε≡∞MM⊗v:∞∞&}≡\NW⊗*∀∧π&z∞⎇εN≡↓Q'&FT∞w⊗OL↑Wαπ⎇≥Fbε|nF.r∞,V6/%dα∧6}$εw.\↑&N≡≥Dε≡}L↑2bα∞Mε*ε≤,'⊗/m≤↔&N⎇aPT⎇∧∞7&∞lN2ε6}$π&FT
wε/,≡FN}d6}&TfN.LEB∧4f␈∩∞Mε*α≤6∨.↑]F∂&}$ε6N]L@hV≥lB∧J$ε6␈$∞FF*\f6.>M↔6*∧⊗&',↑7~ε|dπ&FT
U,zd∧∧6␈$∧∧≤IEt≤II∩¬-Y}2`h.Mε*εn]V/⊗≤>2π>≥MBε⊗T∞FF␈<Tε}2∞Mε*∧8→DdJaQ hUMRπε∞,↔≡/4λ∀~∧HXe"ε≥lB∧4
$L<
Dεn.≥eBπ⊗↑>ε.∨M≡f.g∃D¬$DT	D,5D	∧dd	t0h(_2ε∞lD¬$DT
$L<
D∧DHd∧|2λ_2ph!Q%>F↑,W6/$∞FF/,TεO~∀ε&∂L∀ε⊗f|=2ε}d∧εf.l}FB∧d∞W≡.D
w∩π<↑Bπ/∧'Jα∀¬-,uAPW&Tπ>␈,N2ε}d∞FF*-F}≡4∞vNfD&*π,\f/↔,\Bπ&t↔~¬yz$"β∧∞FG⊗}\vB¬yz$"∧eV⊂hV}$π≡}\↑FNn↑4αG/>\⊗fg∀∧π>OM∧π≡F}.Bε⊗M|6←~∀∧ε∂~
I∧*∧i~%≥"∧
t⎇∀D∞FG⊗}\v@h*I∧*α	jDBα
yu∀"d∧α¬εL\↔≡*∧
f␈&T∧π&FT∧ε&NllW⊗.l<Rαε,↑G>.]dααπMW≡*∧∞G>xQ.F/⊗]≥f}f|⎇⊗/~aQ hT∀∞&∞v|Tε}2-↔'~
}"π>},G~π⎇≥Fbε|nF.r,Rπ⊗\lW⊗.l<V"ε/∀ε∞r←ππ⊗↑>6N}d
v0h.Mε*αmw⊗j∧+βUJ%Dαπ>↑&*¬∧∧ε∞vD∩αε≡,Rεw]\&/↔5dαα¬M
↔~α∞,Wπ⊗↑<Vw'4⊗f`Q.f∞g\↑2ε7-⎇Rα¬∧∞FG⊗}\vB¬∃dαα∧m}"ε/≥WεfUDα⊗⊗≡N2αβ↔π#∪2$
V.∞n4αε⊗≡N2β↓Q'&G-}V>Bε&bph!Q$∞fD
g.n,↑'~π⎇≥Fbε,TεNr	x5$DWF≡↑∞Bε6}$π&FTf}fM}vNvuDπ>F≤=ααπ⎇≥Fbε,QPVNdλD,≤→X∀cR-↔"εn]V⊗/.4ααFUlrrb∧,&O"ε6R∩JD'O&T∞6OV↑4ααFUlrrb∧&∪∩n-≡@hV/≡F/~%∃BαπM≥V/~∧¬ε*vueBα∪6∧απ≡\=vv'4%∩bα≥f"εn]V⊗/.4αππ,\6.&\Dαε↔∀⊗ph,↑↔.∞N4π≡N⎇dαF*lubbα'V∪*∩∃aPPh*,V6/,]f≡/4∞Fzπ≡'&N>]F∂∩-↔'~
}"ε?-}Wπ~
|bε⊗≡N2π>≥MBπ/>\⊗fg∀∧ε⊗*
\⊗&(Q,&␈&∧'JπMRε⊗≡Dεw.\,W↔~≥f"ε.α(∞M→(≠l>_;λ∞l;≥9$∞Y<⎇-N~;Yd\[{$∧)|d
;C"NM→(≤n8z9M≤9λ_M≡λ≤≠n==~;mnkHλλm|H→/;<≠WC"C!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ¬eKZ9DZ=λε∧

εε¬Fλ_Z.E(~<d
{KKEa"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧KKL≥Yλ_M≡≤h'πLMH¬ε
fvl∧Z=≤e∃↓↔↔εBεE*4→P7qz_v⊂;0[:rP;Zv6⊂1→P4w⊂~0v3⊗]wy2⊂→7y6p]⊗⊂0yH9t7{[⊂0q7]2WεEβ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂)Qaj$gS⊂→⊗VQbg"i⊂f⊂$g∀*j↔gUj(*jβEεEεB*42P≤:y87\rP⊂7Y⊂4w8≥z↔wz]8:z⊂λ∀$WgJP4yP≥7P⊂:≤0w9s→y⊂20]0P⊂1→z;rr[⊂:42CE1wv\:z2y	yP6r[wy<P_w2⊂⊂_w⊂2|≥2y70[⊂22{~qrP9]qt⊂⊂_yP0P≥0x2Vλ0P⊂2~yuV⊂_FE89~w:2y⊂2z1K⊂⊂*4→P*jg\P0y2H9pz⊂≥x⊂:7H0v67]P$WgH;tz4λ0P30Zy⊂0v[zw:⊂≠sεE3≠2|4q~v4z<H0w2⊂→2{4qYP4w2→x2w2→w1rWλ⊂$WgH42y2H4yP2≠w2P7[⊂0P⊂≥2y<P≠7{FE≠2{2vλ0w2⊂~w;7v≥2yP:~92rP_0ytqH840yYy]⊂4[4z4p[4⎇0z~ww⊂7Y⊂⊂:4→P22{~qrVεB:90w≤s2y⊂≠s⊂:4→P⊂20]0V⊂0[2⊂92[2pyt[3P⊂7Y⊂:42H22{4XrW⊂⊂λ w7z~2y⊂8~0yrVβE34v→P⊂9r[2qz4[w⊗⊂⊂~yP⊂7→qryyXy<P⊂→7y⊂⊂≥42P⊂→4yuPλ0w2⊂λ7z42\⊂24y→qz7y≡FE22]4qryKεEεE∃42y2H0y2P≠z42yλ9tvx≠2y⊂⊂→7y6yH7s⊂$KgP37\⊂1ry≥0tw⊂λ22{4XryP∀~w1v:Y4w3FB:2y6Zw0v9J]P$WSP37yλ:47yYP22{~qryP~yP2|≤60tw→r⊂4wλ60z2\⊂9rq]4ww9KεEεE∃42P1_ytqP≤40yr\P7s⊂∩WgP1Xw⊂⊂1→P9rr[⊂4w⊂≥42P1[y92y\7w24[3P*jSyV⊂⊂≤wP$FB;tv6λ3t{2H0w⊂2↑0vx6→P9rx]rw1rH7s⊂:~2P*jSyP:yYr⊂4wλ$WgWλ⊂)tw_rP6zXt⊂7sβE:42H⊂$WgH27w2H⊂1<P≤97sy_vyP⊂≥yryP≥42P⊂→4yuVλ$P⊂;Zv6⊂4[1v:r→P⊂:4→P34v→FE9r[2qz4[w⊂84_yrP4[⊂:42H2|0v\62P1→v7{Wλ⊂'7z→P:40]⊂:44\P2|0[x62Pλ4yP7≠zεE0H1wvx≠2z2P≤97sy_v]P4]⊂1ww≥0tw9H7w6<H9wvrH2|1r\8:9P~w;7v≥4w3Pλ:42P≥yrFE≠s⊂*jSyW⊂⊂∃44yP~yP4w≥2w22Y⊂⊂:7H4w:9≠r:qrH<wzP≥7P;0\4wzyH⊂$WgH1ww1Yx:9FB;t4qZ⊂;tv≠⊂⊂12H2|86_tw2rλ⊂4w⊂→y2pzλ⊂22z_tv⊂4[⊂⊂:4→P92vXtw22\⊂⊂7sλ:44yCE9rq]4ww↔βEεE⊂λ$g$jλ⊂⊂⊂_K_X⊂⊂λ⊂≥j4~yP⊂4[4z4p[4⎇2yH⊂:42H24yuH∀")eJP⊂7wλ1t0w≠2v⊂_H4wεEλ⊂)dl⊂$j⊂⊂b)eWH⊂⊂≥P≠wr2PX⊂⊂0[2⊂9x→qts4YyP0wλ7zz8≥z⊂1:Y32y⊂~2pr2\⊂0zεB⊂⊂'a∃c⊗⊗_λ⊂⊂⊂⊂λ⊂⊂⊂≥H67qp]4ww⊂λ'a*c⊂⊂⊂*\7w⊂0[⊂2y9≠y⊂⊂4[⊂:42H2|2q]z4wwβE⊂⊂$⊂f*⊂⊂λ⊂↔⊂⊂λ⊂⊂⊂⊂∞P7s⊂≥44yP∃jgV⊂≥42P8≤7sy0[P;tv≠⊂$ f∃↔εE⊂λεE⊂⊂⊃g*"iλ⊂⊂_V⊃$f"Pλ≥j44\P7x2[9P:4→P34v→P9x2Xts4rY⊂0z⊂≠7qpz~ww⊂#∩f"P3≠yεE⊂λ$ f*λ⊂⊂⊂↔λ⊂⊂⊂⊂λ⊂≥P7]z8:zλ7w⊂1Z0w72[⊂_]P≥44yP≥tv6⊂∩ f*⊂≠w⊂0w≡P2y9≠y↔εEλ⊂εE⊂λ'jj(∃j⊂⊂_K⊂⊂⊂⊂λ⊂≥j4~yP4yH:yrrλ:7P;\4z2P≠zz⊂2_z0P7[⊂1t0[72v⊂WεE⊂λεE⊂⊂⊂f'ibH⊂⊂_Vλ⊂⊂⊂⊂λ≥j44\P1v7\ryP:~2P34[2P7x→w⊂7wλ1t0w≠2v⊂_KεE⊂⊂βE⊂⊂)⊃f"`iH⊂_V⊂λ⊂⊂⊂⊂∞j44yH92v2XyryP≥42P2→{4qrH7w⊂1Z0w72[⊂_WεBεE$wλ3rw2\0v⊂⊂∩WgV⊂≥42P⊂≠rz47Y9P37\⊂⊂27Zw3P7]z8:zλ⊂0y2H;2y<H⊂9tvZv0y⊂≥7FE:~7yrP→7y⊂2≠tw3Pλ4w8:]↔⊂⊂![w9rx]rw:6≡V⊂:4→P37v≠7{tw→P⊂24\qzyyZww⊂;Zv6εE→2yqy~q2P:~2P10\tqyP≠s⊂4w≤:z≥P≠tw7yλ24s3→y2w1YyP37\⊂27t[3P7z]8:z⊂≥tv6εB:yzp[6<P⊂_2P⊂6Yw:4w[2r⊂⊂~w⊂⊂8_y2w:~2z4qXv⊂⊂9→vpy5\W⊂⊂⊂⊂w<P9Zsw4s~qpw:βE24s→2y2w_ryP;Zv6⊂1→P1pv≠2r⊂:≠P<wz\⊂0z:→w:4w[↔εE                       2.1  User I/O Channels


A program is allowed  to use up to 20  I/O devices at the  same time.
In order to keep straight which device an I/O UUO is meant  for, each
device  in use  is assigned  a CHANNEL  NUMBER.  The  channel number,
which can be any number  between 0 and 17 inclusive, is  specified by
the  user  when  he initializes  the  device.   Subsequent operations
involving that device refer only to the channel number and not to the
name of the device.  The channel number is chosen by the user and has
significance  only   to  the  program   in  which  it   is  assigned.
Furthermore,  when  a  device  is  released,  the  channel  number is
disassociated from it; so if the device is to be used again,  it must
be initialized again with a new (possibly the same) channel number.

To overcome the  limitations imposed by the  fact that the  number of
I/O channels is  fixed at 20, some  UUOs have been provided  to allow
you to save and  later restore the state  of one or more  channels in
order  to  be  able to  use  those  channels for  other  I/O.   For a
description of  this feature,  see Section 2.13.   A RESET  (see page
250)  releases (without  closing)  any channels  which  are currently
saved as well as any normal channels open.
                           2.2  Data Modes


When you are  doing I/O, you  must select the  dap	∧A[←I∀Ai↑@↓EJAkMKH\~))QJ@↓[←IJ↓S]IS
CiKfAQ←n↓iQJ@↓ICiB↓Sf@AQ↑AEJAieC9gMKeIKH↓iπβK'7∂∪'3e`h+←#/##↔Iπ##∃β&S¬β'∪π;O6+KMβ∂∪∃βSzβ∃β↔+≠≠↔⊗+⊃βπv!1β'2βH∞zD∞vF/MW∩πMPhVL≡F
ε≡4εn∞LTπ/α
|bε≡≡&∞∨L↑'~ε}$ε}2nVfb∞⎇w⊂≤kC!!"R;D]9YL↑Y9λ
]y→+∧∧≥~→$∞}<⎇](≥≤L≥\yY..hλ→≡_(_L↑≥y9-d≥~→$∧→→=M≤y(_-lβ"\m⎇9(_N\YY<N4~;H∂≥⎇<H=|Y(≡Y8+D∧⊂]9Ll<\h≡Y(≥.<9λ≤mt≥~_.Dλ≥~T≤}<nL;#"L<;H_LTλ≥≤L≥\yY..Z;Yd_<α0H4w:7H⊂7y⊂≠zz⊂7Y⊂⊂7w→P0y2XP∀1:Y32y∀H⊂7s⊂≡wzyεB1wy2H4vpsYP⊂;t~v2P<[zP0y→P⊂:9_w9s2\94w3H20z0H7zz⊂λ7s⊂7\⊂⊂4w≥7P0w≠z42yβE0y2XP∀1:Y32y∀K⊂⊂*9_w9s2\9P39≠vP7yλ:7P0H22{4XrP0y→P4w4]4pz2Y⊂37yλ4w8:]εE1<H:42P∩g(*jλ*jgP_w2⊂3≠y⊂7z]8:z⊂_<P:4→P$πUTPUT UUO.  To get  data from
a buffer on input or to put data into a buffer for output, you simply
do ILDBs (input) or IDPBs (output) with a byte pointer that is set up
by the system.  The data is  thus handled a byte at a time,  with the
bytes being either  characters (7 bits each)  or full words  (36 bits
each); the mode determines the byte size.  When a buffer is  used up,
you give an INPUT UUO to get another buffer of data (or an OUTPUT UUO
to write out a  buffer of data).  The buffers  you use are set  up by
the  system  in the  form  of  buffer rings.   Buffer  rings  will be
described in detail in Section 2.4, but now back to data modes.

The alternative to  buffered mode is dump  mode.  To read  (write) in
dump mode, you tell the system where in your core image you  want t↓QJ4∀β∪π&	βS=αβ∨=↓F≠?7∃αβ≠K?jIβπ;"β#?]αβ7π;Jβ←?K'→↓βπ,Rπ&t∧ε⊗*∞N&∞w<lW↔⊗\E`hUM
↔~ε≡4ε&}lTπ>OM∧ε'.↑∧εn}LTε≡}]\⊗v"
M↔∨'5Dπ>F≤=απ>≥MBε⊗TWGεL≥⊗v.D
⊗ph*<V∨&≥⎇bαβ%f2rα	≥bαεN]Wαα
]v&*D∞FF*∧⊗∨'\≥Bπ',≥g≡6↑$αε}d∧ε&∂L∀ε⊗/N|V.pQ/⊗␈/$6␈⊗T
⊗n∞|Tε∞vD∞FF*∧F/6≤<RεF≡∞ε.w4∞vF.d∞FF*	→e¬-D
w∩α	zU%¬ZD¬-,qQ&O~⎇↔6.eDε∞vD∞FF*
ZTzεM|W~εm}Bπ⊗↑NW⊗r∞]g&ND∞FF*∞N&∞w<lW∩α
≡2ε≡⎇↑εf/LQPRG]mF/∨4∂⊗␈*∞,W∂.↑>Bbα∞↑7.∞MO∩ε↔∀∞6/'M≥f:α∞=vn*∞>ε.≡≤≥Bε⊗≡EBαπM↔"πMPhUZYrπ⊗↑NW⊗r
≥Vn.M≤↔&.O∃Ro&
≡2εO4∞ε␈∨=≤&f*
⎇fgJmw∩ε<↑'&∞≥dε&/m≤6/~∃aPPh*Mε*ε,≡6N~L↔&

]v&/4↔⊗*
M↔∨&\DεNr∞Mε*εm⎇Ff␈⎇≥f:πL≤&f*∧⊗v"LW≡∨-≤&. Q,&.f}ubαα
Mε/⊗T∧ε∂⊗T
V∞w∀∧π∨ε\=⊗∞b
]v&/4∧ε6␈$∞7ε.=≤fN~∧F/6≤<W≠Z∞Mε/≡QQ&n}L↑2ε∂,Tε&/<>&N⊗\DεNr
<V∨&≥⎇bβ5Dπ>F≤=αε&\≥G~α∞⎇↔&BLW6N<UV&/]f&.nAPV6\≡G/⊗↑5bHh!Q"αα∧	Tp_⊃(λ∧	P31$∧λλλ∧∧λλλ∧∧∃⊗4λT∪qH
JP3Thh4Tc!!"Hλ∧∧λλλ∧ελλ⊂*8r2(∧∧λλλ∧∧λλλλ.9YY.,9λ_m<X8nL<\h¬εk8Z.D_↑=T≤≠z-n→<J!QHλλ∧∧λλλε∀λ⊂4h92(∪	→Q(λ∧∧λλ⊂N\YY<L\λ_z≡X8⎇↑\h
εu8Z=∧↑=→$∞≠z;NL<J#!$λλλ∧∧λ,∧∧∩30(x(λλ∧∧λλλ∧∧λ⊂],lY<Y,D≥{|LNh
fe8Z=∧↑=→$∞≠z;NL<J#!$λλλ∧∧λ,d∧∩30(x(⊂R)h4V(∧∧λ⊂],lY<Y,D≥{|LNh
f`⊗q4zλ1<z2H87tw≥2y∀FB⊂⊂⊂⊂λ⊂⊂_Zλ⊂!$g⊂i,P⊂λ⊂⊂⊂⊂λ⊂⊂!:Y32y2Y⊂;wy→9P∀→M⊗q4zλ1<z2H87tw≥2y∀FB⊂⊂⊂⊂λ⊂⊂_[λ⊂"*fT⊂)"aSi"⊂⊂λ⊂⊂*w_:s32\2rεEλ⊂⊂⊂⊂λ⊂_[Pλ"*fhλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂*w1≥s32y→rεEεB iadRP6wr→P∀6wY2P_) is used for inputting (outputting) text.  You get
(put) one ascii character at a time from (into) your buffer  by using
the byte pointer.  (Note: For  TTY input in ASCII mode, an  INPUT UUO
will  not  return  until  your  TTY  buffer  is  full   (holding  =95
characters) or ↑Z  (CONTROL-META-linefeed on the displays)  is typed.
However, TTY I/O is usually  done with the special UUOs  described in
Section 3.)

ASCII LINE mode (1) is the  same as ASCII mode except for  TTY input.
There  it means  that an  INPUT UUO  will return  when  an activation
character is typed or when the buffer is full, whichever comes first.
(Nop¬5CYY`JβS#∃αβπ∂SO3πS'}qβ∂#∂∪π∂S/∪M↓β∂∪∃β∂∂∪K'π>)↓βK/#WK9bβ3';.3↔↔⊃`h+π3&k?∪∃ε;⊃1αβ?9αLJ%↓β∞s⊃α∪∂#¬α∪O≠
↓β&KOC3∂KM1β≡CπKπ∨#↔KMαβSgC.!β←'&@4*∞|rRJ>bβ?Iαl*R¬9Hh(4*Ljε≡∃εk?∪∃αAEA%εKMβONk'3π∩βS=α
~∞&%εk?∪∃ε+c∂↔π!βS#∂!βS#*βgS/→βπK*↓MX4V∪'SMεK;OS.⊃β?2↓]9↓¬;#↔9πK?Uβ&yβπ9∧J2∩	αB&∩B∩Iβg?*β∨↔QαCCWQJ↓β¬β>C?3∀hS←?K"β≠K?j↓#';&y%βSF)βW63↔I9α↓αg?*β∂π9π∪↔π⊃π#↔cQε3'3↔~β'9↓π##'Mεk?∪∃`h+'9π;#'∂Bβ∂πO*βg?Uπ;'31ε;↔Q↓*β∂#π⊗∂S↔↔→βπQε	βS'n)84(hR&6ε<)α
&t
Je↓C	M%↓ε;⊃α∀J:εJJ↓!EQJβ7?∪/→↓βπ⊗)βS#*βOπ7*βπM↓∧J6ε≡*β7?∪(h+↔c≡+CQβ6{IβSF)βCπε+IβS∂β∃βK.∪↔Iε;⊃βπ+;∂!ε;⊃β&C∃αb=↓9↓↓¬≠↔∃α≡+∂S'}p4)E~qQβ≠␈⊃βS#*βWO∃αβ?→βn{∪∃↓→β←'&AβS#*↓αb≡αaβπ;"βO↔∃¬≠↔∂SN{9↓↓→9]β∞s⊂4*≡+∂S'}q↓EMsAβ≠?∩βS#∃εk↔π;Ns∨Mβ}1βS#/≠∃β7}#↔Mβ>KS!βεC↔Iπ#πC∃∧I>=8hP4*∩,jAβ7}#∃↓!9%β'~βWO↔"βS=β&yα%>zβ←'SF{WQβ↔+≠≠↔⊗K;≥9αα←'SB↓β↔π≡Aα&:¬*P4+␈⊃α>V%αVQα-*=1βN{Uβ7/≠Qβ∨O3∃βSF)βπ∪'∪↔OMε{→β¬ε#W7Aεk?∪∃ε≠?77∞s⊃β3O≠Q04W;#'∂BβOC↔≡K≠'↔~↓β#?:β7π;Jβ←?K'→↓βπ,Rπ&t&*α∞N&∞w<lW↔⊗\Dε∞vD∧π>F↑,RεNaQ'N␈ they are to come from or go.  The INPUT or OUTPUT UUO
does not return  until the transfer  is complete.  Dump  mode command
lists are explained below.

DUMP RECORD mode (14∧RA%fAiQ∀AgC[∀ACfA⊃+≠ A5←IJ@ bnR\4∀_@@@@@@@@@@@@@@@@d\fA	k[@A≠←I∀Aπ←[5C]HA1Sgif4∀~∀~))QJA∃MMKGQSmJA¬IIeKMfA←L↓C\A∪9!+(@↓←dA∨U)!+(↓++≡A%\AIk5`A[←⊃J@@PDlA←d4∀bnRA[kgPAEJ@↓iQJA¬IIeKMf@A←_AB@A⊃k[`A5←IJ@↓G←[[¬]HAY%gh\@A)QSLAYSgP~∃G←9gSgiLA←L@↓k`Ai<@b``AIk[@A[←I∀AG←[5C]If0@AKC
PA←L↓oQSG @AiC-KfA←9J~∃o=eH\@↓)QJA∃]HA←_AiQJ↓YSgh↓SfAS9ISGCQKHAEdABAu∃e↑Ao=eHAC→iKdAQQJAY¬gh~∃
←[[C9H\~∀4∃∪\AQQJAY∃MhAQ¬YLA←_AB@A⊃k[`A5←IJA
←[[C9HAo←IHASf↓iQJA9KOCi%mJ@A=LAiQ∀~∃]k5EKd@↓←LAo=eIf@↓i↑AE∀@Aie¬]gMKIeKHX↓C]H@↓S\Ai!J@Ae%OQhA!CYL@↓SfAi!J~∃C⊃IeKgLA←LAQQJAo=dβ⊃α∀*~>J*βS#∃ε3'KO"β←?K"β'9βN{WIβ≡{K∃βNkπ∨∃π#=β←FK∂ 4RC≠K?jβ←#'≡A%βSF)β∪π&	β'Mπ#=β∨z↓#∂?n)%84Ph)"SFKMβ'~βS#∃αβOSπv#πK⊃ε#W7Aεk?∪∃αβ∂?7n;⊃β6{K7π"q↓αO}k∃↓β&+['∂/→β3'↑(4+SF)↓αR2β∂π7/∪πM↓ε;⊃↓π##∃α!↓β∂}s[↔K&+IβS∞[∃↓βv{97O&;∪π,BαεN]Wαε]|F(h,=vnn≥lG~r∧
6.*∞Mε*ε≥lFO6≤NV∞bLW6N<Tε&/<>&OπM≥vw~
≥b¬≡\>FN}dε∪~r⊃Q hT≥dαπ&Tε∂∨<]V⊗g∀∧εf∞l}V∞>↑5Bπ&↑&*α
≡2ε
∧∞π≡/\Mrn␈∧6∞fL\Bα∧→zt"πM↔ h,|Vv/,≡F/~NVoα
]v&*=vnn≥lG~r∧
FF*
M⊗v(Q$ααα∧∧αα∧→zt"∧eID|_Q,v.v↑,↔&/4∩απ⎇}&"π⎇≡FBαYdαεNd∞FF*∧
F.7D
ε∞fd⊗v"∧	D|~V∀εNr∧∞FF*∞-⊗>GAQ&F∞Lebααλ≡2αε∀∧ε'.↑∧εn}LTαε≡⎇]V∞vEDαπ&
≡2απ⎇≥Fbε<≡W≡*∧	bαπ⎇}&'~∧∞Fzε,QPW',≥g≡6↑.&."∞MrαFn-vjJ∞Mε*α-F}≡46}w=≡7&Nltε}2
Mv≡∂M≥vw~∧	D|~∞Mπ⊗␈\⎇hTIx2\rV∃`hPQ(V∞≡∧G.o∧
V}&T∧ε≡}]\⊗v"
≥bε

M↔∨"∧6∂/<↑2ε
∞<Wε∂,≡F*∧∃yrαπN,⊗w≡l↑"π&qQ'&∞<TαπεL≤6*r∧∧∧Nr∞↔↔&≤>Vf∂%Dαπ>≡Mααπ,\6␈⊗DF/6≤<W~α¬
FN↑T∧π&FTFO≡5APV&\>F∂ε↑4αε∞lDαεn≤⎇f/&≤4απ&≡W~J\⊗≡B∧6}n\≥f"α
≡2αε←V∨/L\Bαεn-vjπMPhV,\vNvm≥f:ε|dε
π,\6␈⊗Edα∧6}$ε/F≥↑εf*∞Mε*ε=⎇Vn∞lDεfO>APPh$∧ααα∧∧α∧LzxBβε¬Dλh$∧ααα∧∧α∧LzxBβε¬D⊂h$∧ααα∧∧αβQ!PW>≥MBπ⊗\≤Bβε∧π>␈,N2ε7-⎇Rε}lTπ⊗.=}&"ε≥lBπ&]bβε∧π>␈,N2ε7-⎇RαπMRεv←∞@hW,\6␈⊗ED∧L<iz$Lttλ∀dbλ*U"¬IλR∧4~*5"β⊗εα¬<z(E~∧xd∧,9∧¬∀,9z$"pQ!PT≡⎇n6.∨↑M↔6*=vnn≥lG~ε≥dε
α
M↔∨"≡&*π↑>V∞fO∀ε6/L=ε."∧g⊗}T6}w<\7/&≡lPhW⎇}&'~d∧∧F␈|↑f/∩D∧εN2∞Mε*α	HT5"
⊗f2
|bαε∀G.o∧∧εn}LTε≡}]\⊗v"∧∞v␈⊗D
↔_h/,W⊗zD∞FF.d∞FF∂D∞v␈⊗D
↔~πL≥6.r∧	d⎇"≡2ε
=vnn≥lBbε.↓=∧<h_$∧∀∪r)j⊃4H∞Mc"]
(λ≠L←≥λλ={;8-lλ≥{n,λλ∞⎇~8z∧∧~<h∞M→;H∧Y=_m9λλn[{(∧∞~→(
Mxx=
≥{C"N>→8z,m99λ/(≥~T∀R1i
λ~_-LHλ≠ld≥~_.D≥{|LEHλ
	|H_{n↑\y+∧
9Hλ∞M→(≤M≤z≥β!-_;→D
<h≡L↑[h_-N{kλ∞M→;H∞M_=λ∞⎇|Yλ
\<Z|d∞~→(]Yλ≠ld≥~→${{;,≥Yλ≠
≡⎇J!QQ[|D>_;.
→+λ∞M→(λ∞N{h_m⎇;8;LD≠~<nNhλ→m≡Y;H,;≠⎇d¬_Y9m≥[Z;Ltλ_=∧	∩4uε⊃"X;LD∪∩4jFKλ≤L↑|→8nM=Y;∂∃(_<LT→<=-≡X;→-nC"AQHλλ∧∧λλλ	I4u'$λ∩3jxλLε¬∪∪pf∀λλλ∧∂λλλ∧∧∪∩4jFNHλ	→uqλε&∪	xl#"D∧λλλ∧∧λλλ∧∧λλλ∧	3uq∧εL	IplH∧∧λλ∨∧∧λλλ∧∧λλλ∧∧λ∪∩*:PC!$λλλ∧∧λλλ∧∧λλλ∧∧λλ∧∧λλλ∧∧λλλ∧∧λλλ∂Dλλλ∧∧λλλ∧∧λλEeC"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ∨β!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∂Dλλλ∧	∩4uε(NH∩)zqλFε∪∪h6C"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ∨λ∧∧λλλ∧∧λλλ∧∧β"AQU~→$
{[≡$~9YL↑Y;XlT~<h∞M_=λ∧
;H≥
(≤y,={Yλ←_;<
L+λ≥
(λ_m⎇;8;LNh_<LQ"Z;D∞≥{hM9YY.,;]λ∞
_8y.4~;\nL89λ
|H_Y-≥Yh→
≡Y8⎇
O(~;D
~;Y%dλ⊃:.M→<H
|C"]
<y(
M<⎇≤d∞{⎇;Dλ_x.↑y(Fελ≥{n 29P:≠P⊂12H:90w≤s2y9→r⊂:7H⊂∀39≠vTP&∪aXFE_w2⊂:~2w⊂→_⊂;w\ds to (from) LOC2.
                          2.4  Buffer Rings


When you  are doing input  (output) in one  of the buffered  modes, a
ring of buffers is set up  by the system for storage of data  in your
core image.   This allows you  to empty (fill)  one buffer  while the
device is filling (emptying) another buffer independently.

A  buffer ring  consists  of some  number  of buffers  with  each one
containing a pointer to the next.  The last buffer contains a pointer
to the first; hence it is a ring.  The user can specify the number of
buffers in a ring with  the INBUF and OUTBUF UUOs (see  Section 2.9),
or he can accept the system default number of buffers, which  is two.
The current buffer in a ring is referenced through a three word block
called the BUFFER HEADER.   When you initialize a device  in buffered
mode, you  give the address  of a three  word block where  the buffer
header is.  The system will initialize the header when it sets up the
buffer ring.

The buffer  header contains  1) a bit  indicating whether  the buffer
ring  has ever  been used,  2) a pointer  to the  buffer the  user is
currently emptying  (filling), 3) the byte  pointer that is  used for
loading (storing) data from (into) the current buffer, and 4) a count
of the number of bytes left in the current buffer.  Normally only the
byte pointer  and the byte  count are needed  by the user.   The byte
pointer is in the second word of the header and the byte count in the
third.  The  first word contains  the use indicator  in the  sign bit
(400000,,0 bit) (which is set  to 1 when the buffers are  created and
cleared to zero when the first INPUT or OUTPUT UUO is given)  and the
buffer pointer in the right  half.  For input, the byte count  is the
number of  bytes of data  left in  the buffer; for  output it  is the
number  of bytes  not yet  filled with  data by  the user.   The byte
pointer is set up so that you can get (put) the next byte by doing an
ILDB  (IDPB).  When  you initialize  a device  in buffered  mode, the
system clears the  buffer header and then  sets up the size  field of
the byte  pointer.  If you  so desire, you  may then change  the byte
size to any size you want,  and the system will do the  right things.
(The  system actually  uses  the byte  size  in the  byte  pointer to
calculate  the byte  count.)  Fy,  whenever you  do an  INPUT or
OUTPUT  UUO,  the  system updates  the  entire  buffer  header before
returning control to you.
                            2.5  Buffers


The  first three  words of  each buffer  are used  by the  system and
contain no data.  The first word contains the device I/O  status word
(explained in  Section 2.6)  for the  device at  the time  the buffer
was transferred.  The  left half of the  second wor↓HAQ¬fAiQ∀@AgSiJA←L4∃iQJ↓EkMM∃dA]←PAG←k9iS]N↓iQJ@↓MSegPAio↑↓o←eILXAiQ¬hASf0AiQJA]k[	KdA←_~∃ICQBAo←IIfAS8AiQJ↓EkMM∃dAaYUfA←]∀\@A)!JAeS≥QhAQ¬YLA←_AiQJ↓gKG←9HAo←IH~∃Q=YIfAQQJAC⊃IeKgLA←L@↓iQJA9KqhA	kMMKHAS\@↓iQJAIS]N@!oQSG A[CrAEJAQQJ~∃MC[JA	kMMKHR\@A¬YXAa=S]iKIfAi↑↓EkMM∃efXA	←iPA%\AiQ∀AEkM→KdAQ∃CIKd↓C]H~)Me←Z↓←]J@↓EkMM∃dAi↑AiQJ↓]Kqh0@Aa←%]hA]=h@Ai<AiQJAMSeMhAo←IH@A←_AiQJ4∃EkM→KdAEUhAi↑↓iQJAMKG←]⊂@Ao←IHXAo!KeJAQQJAa=S]iKHAi↑AQQJ@A9KqhA	kMMKH~∃Sf8@A)Q∀AgSO8AEShPh``@``XX@AESh$@A←L↓iQJAMKG←]⊂Ao←e⊂AS\A∧@AEk→MKdA%f~∃g∃hAi↑bAEr↓iQJAMsgiK4AoQK8AiQJ↓EkMM∃dASf↓MkYX↓←LAI¬iBAC9HAGY∃CeKH↓i↑~∀@AoQK8AShA%fAK[Air\~(~∃)Q∀AeSO!hAQC1LA←L↓iQJAQQSeH↓o←eH↓Q←YILABAG=k]hA=LAiQ∀A]k[	KdA←_Ao←e⊃f~∃←_AICi∧ACGiUCYYr↓G←]i¬S]KH↓S\Ai!JAEk→MKd\A)QJ↓YKMh↓QCYL↓←LAi!SfAo=eH~∃%fAeKMKemK⊂AM←dAE←←-WKKa%]NAkMJAEr↓iQJ@↓gsgi∃Z\@A=\A←kQakh@↓iQJA]←eH~)G←k]PASfA
←[akQKHAMI←ZAi!J@AEeiJAa=S]iKHAS\AQQJAEUMMKdAQKC⊃KdAk9YKgf4∃iQJ↓∪∨/ε↓EShA%\@Ai!JAIKYSGJAMiCikLAo←e⊂@@Qg∃JA'K
iS←\d\lR↓Sf@A=\XAS8~∃oQ%GPAG¬gJAi!JAmC1kJAS8AiQJ↓iQSe⊂Ao←e⊂A←LAQQJAEUMMKd↓SfAi¬WK\@↓CfAi!J~∃G=k]h\A)QCPA[KC9fAs←T@A[kMhAga∃GSMS
CYYr↓aYCG∀AiQJ↓o←eHAG←k9hAiQ∃eJ~∃e←keg∃YL\@↓≠C]rAIKm%GKf@!S]GYUIS]NAiQJ↓ISgV$AoSY0@A]←PAiCW∀@ABA]←eH~)G←k]PAYCe≥KdAi!C\Ai!KSdAMiC]I¬eHAEUMMKd↓gSuJ8@A)Q∃eJACIJACh↓YKCgPAio↑4∃IKm%GKfAQQChA]SYXA¬GGKaPAEkM→KefA=LAC]dAgSu∀tAiKI[S]C1f@AC9HA[C≥]KiS~∃iCAKf\@↓
←dA=iQKd↓IKmS
KfX@↓G←]gUYhAi!JAS]⊃SmSIUCXAI∃mSGJAoeSQKk`A%\~∃'∃GiS←8@bf\4∀~∃)!JASY1kgie¬iS←\A←\AQQJA]∃qh@AACOJAMQ←of↓iQJ@↓giek
ikeJ↓←L@A∧AEkM→Kd~∃IS]NA]SiPAQo↑AEUMMKeL\~∀_@@@@@@@@@@@@@@@@A	∪¬∂%β~↓∨Aαd[¬+→
$AI∪≥∞~(~∀~∀A¬+
→$A⊃∃β	$4∀@@~(@@@@@@@@ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZ@@@A84∀@@@@@@@Aygx@@@@@@@@@@@Ap@AEk→MKdAA←S]i∃d@Axd2222d2222∧~∀@@@@@@@@ZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4@@@@↑@@@α~∀@@@@@@@Ax@@@@@@@@↓EsiJ↓a←S]QKd@@@@@@@@@@↓x@@@@@@@@α~∀@@@@@@@@4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZ@@@@@@@@α~(@@@@@@@@↓x@@@@@@@@@AEeiJAG=k]h@@@@@@@@@@Ax@@@@@@@@α4∀@@@@@@@@ZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZX¬5ji555ji555j↓↓↓↓α↓↓↓↓λ4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α∧4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓∧4R↓ε}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z|4)α¬α~M∩NQα∃(~~⊗∩↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓¬p4)↓	↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓αph)↓
↓↓↓↓α↓↓55ji555ji555ji555ji555ji555ji555ji555j↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓αxhQ↓¬α↓↓↓↓αβq↓↓α↓↓↓↓α↓α%>zβOSπ'+MβO#M↓↓α↓↓↓↓α↓↓βqα↓↓↓↓α↓↓↓↓α↓↓↓↓α↓αx4R↓¬↓α↓↓αqαi555ji555ji555ji555ji555ji555ji555ji55↓α↓↓αqα↓↓↓↓α↓↓↓↓ααx4)αdddIHddgg≠qβ∪∂#¬βOOS∃↓-β	βq↓ε∪W≠≠/⊃βC?NsS↔IαβpddIHdddIHd¬↓α↓↓↓↓¬p4)↓α↓↓↓↓α↓=↓5ji555ji555ji555ji555ji555ji555ji555ji↓↓↓α↓=↓↓α¬↓↓α↓↓↓αph)↓↓α↓↓↓↓α↓βq↓αβ??↑[↔↔CNs≥↓↓πaβ∪π&	β←?⊗!β∂?.sQ↓βb↓↓↓↓α↓↓↓↓	↓↓↓α↓↓αxhQ↓↓↓α↓↓↓↓α↓555ji555ji555ji555ji555ji555ji555ji555α↓↓↓↓α↓↓↓
↓↓↓↓α↓αx4R↓↓↓↓α↓↓↓↓πa↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βq↓α↓↓↓↓α↓↓¬α↓↓↓↓ααx4)α↓↓↓↓α↓↓↓βb↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβq↓↓α↓↓↓↓α↓¬↓α↓↓↓↓¬p4)↓α↓↓↓↓α↓↓βqα↓↓↓↓α↓↓↓↓α↓↓↓β&S¬↓α↓↓↓↓α↓↓↓↓α↓↓↓↓πa↓↓↓α↓↓↓↓α¬↓↓α↓↓↓αph)↓↓α↓↓↓↓α↓βq↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓βb↓↓↓↓α↓↓↓↓	↓↓↓α↓↓αxhQ↓↓↓α↓↓↓↓αβq↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βqα↓↓↓↓α↓↓↓
↓↓↓↓α↓αx4R↓↓↓↓α↓↓↓↓αi555ji555ji555ji555ji555ji555ji555ji55↓α↓↓↓↓α↓↓¬α↓↓↓↓ααx4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓¬↓α↓↓↓↓¬p4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α¬↓↓α↓↓↓αph)↓
z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇z}}}⎇y↓↓↓α↓↓αxhQ↓¬¬~⊗∞>t!α
V42⊗I↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓αx4R↓¬↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ααx4)α¬↓↓α↓↓↓↓ji555ji555ji555ji555ji555ji555ji555ji5↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓¬p4)↓	↓↓↓α↓↓βqα↓↓↓↓α↓↓↓αJz=βO&SWMε∪'SMα↓↓↓↓α↓↓↓↓πa↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓αph)↓
↓↓↓↓¬a↓55ji555ji555ji555ji555ji555ji555ji555j↓↓↓↓¬a↓↓↓α↓↓↓↓α↓↓αxhQ↓dIHdddIKsOqε#πS¬π≠'k∃αY↓Eβb↓βW63↔Iβε{';S/⊃↓βpIHdddIHdddIHdddIHfx4R↓↓↓↓α↓↓↓=αi555ji555ji555ji555ji555ji555ji555ji55↓α↓↓↓<hQ↓↓↓α↓↓↓↓αβq↓↓ε∪??/↑+↔C'v9↓↓βbβ∪πS
β←?K"β∂?Ww!↓βphQ↓↓↓α↓↓↓↓α↓555ji555ji555ji555ji555ji555ji555ji554hQ↓↓↓α↓↓↓↓αβq↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βphQ↓↓↓α↓↓↓↓αβq↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βphQ↓↓↓α↓↓↓↓αβq↓↓α↓↓↓↓α↓↓↓↓α↓β∪π&	↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βphQ↓↓↓α↓↓↓↓αβq↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βphQ↓↓↓α↓↓↓↓αβq↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βphQ↓↓↓α↓↓↓↓α↓555ji555ji555ji555ji555ji555ji555ji554hP1↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓Is1↓α∪/3'∂∃∧I>=α∨#πSW~αX∞␈,APPh!Q$6␈$V∞≡∧F/6≤<Rε}d∞FF*∞?↔∨&]Tαπ&↑&*ε≡4ε
π⎇}&"ε<≥Ff.D∞FF*∧F/6≤<R∧JyqPW∨L≡G/~∞⎇w⊗"d∧¬&FT∧εf.nDεF∞Ldε}2∞MεO~∧∞v␈⊗D
↔~π↑<V"ε≥nF/⊗l≥FgJ∧'JπMPhW?≡7&.T⊗v"∞Mε*π-≤vG"
⊗f2
≡2π/<\Bπ&t6}n↑]fN≡≡LRπ>≡Mαπ&Tαπ/<↑"rα
Mε(h.-⊗>GD∧εF∞Ldπ>␈,DαεO4∞6/"∧∞Wαπ⎇Vrα∞Mε*π↑<W∩α
≥fO&≤≥FOV↑4απ&Tε&/m≤6*pQ*FF/,\⊗7&↑%Bε≡↑.F∞Nd&O'4
V∂J,Rπ≡↑Dε↔J∞Mε*π?≡7&.T∞FzπL]FbπMRπ/<↑"ε}aQ&≡}lM↔&N⎇n2π&≡BεF≡lRε∂en (such as end of file).  These bits can be
tested  or changed  by the  user with  the STATZ,  STATO,  GETSTS and
SETSTS  UUOs  (see  Section 2.15).   The  following  table  gives the
meanings of the bits in the right half of the I/O status word and the
meanings of some bits in the left half (used by the system)  that are
common to all devices.

    BITS   OCTAL         NAME      MEANINGS OF 1'S IN  DEVIBβ
A∩=≡~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@A'Qβ)+&↓/∨%λ4∀~∀@@@p@@@@@D```X0`@@@@@A	∃-'¬∧@@A &C∃↓β&+['∂*;M↓βNsS↔Kv1βOO≠S↔4hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβW≠6+Iβ'~βWOJp4)↓α↓↓EIα↓↓↓↓#↓11Aα↓↓↓↓α↓↓α&|*:⊃↓α↓↓αSF)↓↓βfOQ↓αβ∪πS
↓↓β#∂→↓↓β⊗+↔84R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π#Kπ;≡k'SS.!βeπ##∃β&+['∂*p4)↓α↓↓EMα↓↓↓↓∪↓11Aα↓↓↓↓α↓↓α&z↓↓↓↓α↓↓α¬β	β7↔∞sMβ?/#CWQεKMβ∨}K;≥β}q84)α↓↓↓E*↓↓↓↓β!11Aα↓↓↓↓α↓↓↓αLz~NQα↓↓↓α&C∃β;/CQβ∪∂#¬βS⊗;O7O#S↔⊃π;'30hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ∃β&C∃β≠O∪OQβ&S¬βNqβ¬β↔+≠≠↔∩p4)↓α↓↓EYα↓↓↓↓∩a1A↓α↓↓↓↓α↓↓α&|∩⊗≥↓α↓↓αSF)↓β∪/3'∂∃εCπM↓εs?Q↓πK↔Qβ⊗+↔84R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π+O↔⊃ph)↓↓α↓E]↓α↓↓↓EbaA↓↓α↓↓↓↓α↓α&>:↓↓↓↓α↓αO?n)β+?∩↓β'Mπ;π'SNs≥↓β6{Iβ∪∂#∧4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β7∪?5β&C∃β∪/3'∂∃ph)↓↓α↓Ea↓α↓↓↓AbaQAAβ↓A↓↓α↓α&>LjB5↓α↓α'7π∪?C↔∩β7?∪*q↓αSFKM↓β≡9β7.84)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓βn;e↓π##';?→9↓αN1↓βg␈)βπS&+7CPhQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβS=↓π;K'S*↓β?9αβ¬↓β?∪'S∃nc?∂/. 4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β∪.≠SπC*β?I↓¬*∩A1πK?U↓ε;↔Qβ&C'L4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ε+KK?∩β'Qr↓α'→αβg?UεK;'SN3'k(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β¬β&+['∂*β'9β
β7?∪*βS#π"β'Mβv{P4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓βf+∨π1αβ≠?IαβS#π"↓β∪↔6K∂∃1αβg?ThQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ←'3bβ∨↔Qε+'S#/⊃βS#O→β↔K⊗{IβO 4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β?∩β¬βOO≠S↔5ε+KK?∩β7↔O≡∨∃8hQ↓↓↓β	e↓↓α↓↓A1c⊃AAAβ↓↓↓↓αα&>∩-∩I↓↓αα∪↔[N≠∃β∪/#↔∂S.!β↔K⊗{I84R↓↓↓↓∪↓↓↓↓α↓A11↓AAA∧ααα∧	∀p_∃⊃4D∧λλ⊃↑Z8y$∧→→=\⎇→9∧∧→<\M}KHλ
M~<c!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧Z=λ∧∧_;Y∧∧λ≥~Tλλ∩)x⊃4TD∧λ_Z.A"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ→y-l<X;
O(≠9,≥H≥~≡λ≥~T→→=M≤y#"D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ
<hλL=→8nL9λλ≥H≥;LL<z<L≤[→+↓QHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧~9H∧∧λλλ
m⎇λλ∧∧λλ_l≡_<⎇∞-|~~,5β"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ_m⎇Y~=
≥{KC!$λλλε&(λλ∧∧εF∧∧λλλ∧	3pRjIλλλ∧λ→8⎇≡→(λ-≠xzd∧≠];,,<Hλ
}=λ≠la"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ_[n]Y≤kD∧∃~~.4_Z=∧{{9.4λ≠{D
9C"D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∂≥⎇(λ∞,9Y<L]Xy(∧(≠[me9>~.>→;]↓QHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧_[≠l=h≠{D(→→,>_<→%a"Hλ∧∧LH∧∧λλ¬ELεελλλ∧∧λ∩3hH3Qλ∧∧λ⊃;LD≠yH∧Z;→%dλ∃~
≡hλ_M≡λ_{m\<c"D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ
⎇H≠{MO(λ≥m≡~λ~-n≥=∞d∧~=λ
\8;\aQHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧≥~→. 2P⊂4\P77Pλ6wy2H20z0H⊂:7P_2FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂9→pr⊂⊂λ4w⊂⊂_2qpz\rP⊂⊂≡wzP⊂~0{2FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ92pqZ2r⊂:~2P⊂2[2⊂7sλ⊂:42H34v2KεE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂'wλ⊂⊂⊂⊂λ⊂⊂:2[2z<x→yP⊂⊂λ⊂⊂⊂⊂_w2εEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂≤9rzr≠Vz2v→z<x2\V⊂2w→⊂⊂7sλ34v2CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂4yPλ⊂⊂4w→4qpz→r⊂⊂⊂λ1<P⊂λ:<x4[3FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂1[w:97[⊗m⊂⊂
/-∀]H7w⊂⊂⊃0z0P⊃4yqFB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ0w2⊂∩ddP2~yx60↑yV⊂2[2⊂⊂7Y⊂34v→FE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂4yH⊂⊂⊂4[24qp]2r⊂⊂λ⊂1<Pλ⊂:<x~w3FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂⊂gg*)∪f⊗fbU Vv4[2s2rY↔εE⊂λ⊂⊂→→H⊂⊂⊂⊂⊗⊗_X__⊂⊂λ⊂⊂⊂$S`aj⊂λ⊂⊂⊂"→{4qrH4yP0Xz4{2KεE⊂⊂λ⊂→~≥≤P⊂_⊗≠[X⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂)2\ry;2Y⊂⊂37\⊂22{~qrVr→x2w2→w:εEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂→2pz:\2yWεB⊂⊂⊂⊂X⊂⊂⊂λ⊂_⊗⊗
_⊂⊂⊂λ⊂⊂⊂⊂λ$gagS⊂⊂⊂⊂λ)|w1Z97w4↑2P1:Y32y2Y⊂⊂$WSW⊂⊂ [εE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂0z≥2vx:λ⊂⊂4yH⊂⊂6pY2P⊂⊂≥7P⊂6XurFEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂_:s32\2r⊂$KgP⊂9↑w1t9≠w7zyH;t2wβE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂:44\P⊂14]⊂⊂4yH⊂7w↔λ⊂⊂*4_z⊂⊂4\VεE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂2↑0qz6≡P⊂⊂⊂≠w2P⊂λ⊂1:s→2y⊂⊂λ⊂4yFB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ:90w≤vtz:→r⊂⊂3≠y⊂⊂2]2y<Pλ$g(*UεE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂*jSP0w2λ0z⊂6[yz⊂7[2P1:Y32y⊂→7yεEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂→pqt⊂∪jj(*U⊂*jgK⊂⊂*4→P12y]⊂;p|CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂:7Pλ4w9z\2P⊂⊂≤|w1t≤7w7z\P⊂$WSVεE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂4≠{r{2\⊗⊂⊂4\P⊂:7H⊂40{→P2|0Xz6<FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ7w2Pλ1:s3→y⊂4wλ⊂<wz\⊂⊂94[3V⊂7\εE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂12]:2y⊂≡rz⊗⊂≥7P:yYP2:v\⊂6wr→WεE⊂λ⊂⊂→XH⊂⊂⊂⊂⊗⊗→_λ⊂⊂⊂⊂λ⊂⊂⊂$SkaP⊂λ⊂⊂⊂$[44q4]⊂9|y]2vP⊂_wvx:]0z4w[⊂7sεB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ7zz8≥z⊂;w\2⊂1w]w:↔⊂λ*42P≤|yz2[FE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂4yH⊂4w4~q4z2Y⊂⊂39≠vP⊂1[vx:z~w3FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂≥42P⊂≥wy2⊂_wzw:λ⊂:40]⊂⊂3wYyP4wβE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂:42H:44y→⊂;wy→⊂7s⊂→pqt⊂_:s32\↔εE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂'≠y6pv≠<V⊂⊂λ;t2wλ⊂<wzH⊂⊂27H⊂0wεB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ'jj(∃j⊂⊂*UgP4wλ⊂1:s→2y2rλ6wr2KεE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂:4→P⊂⊂9↑yz2vH⊂:yr\P⊂⊂:~2P⊂1≡z2FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂≤7tw:→y⊂⊂4[⊂:42H⊂1:s→2y⊂4→pr2yβE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂:7P_wvx:]2P:4→P7:vX2y⊂7Y⊂;wy→9FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂7Y⊂20z_P⊂4wλ:42Pλ1:s3→y↔⊂⊂∃44yFB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ1wvx≥z2r⊂λ;wy2λ⊂1wz[:⊂⊂4\P:42[εE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂22\7ytz→r⊂4wλ:42P≥44y2λ;wy2λ7sεEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂≥42P1≥s32y⊂⊂⊂$Y⊂:42H⊂$gkPP14zβE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂4yPλ⊂7w⊗λ⊂⊂:4→P⊂⊂⊂≥wy2⊂λ⊂1wz[:εE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂1[vx:z_z4wwλ⊂4yPλ4w44X4z2rλ0w2εB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ;t0z→{2y⊂~yP4wλ:42Pλ:44y→⊂;wy→εE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂7sλ⊂:42H⊂1:s→2y⊂⊂~yP⊂:_urw⊂λ0yFEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂→wyx2[⊂37yλ:42P≥wy2⊂_wzw:εE⊂⊂λ⊂→Y≥ZP⊂_⊗_[Pλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂"0]0P6wY2WεEβ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂↔≠P⊂⊃4v2yCEεEεB"0z0H7w⊂1Yy:0t[⊂⊂22]4qryH4yP9]7y2rλ4w⊂⊂≥42P3≠y6P7Y⊂34v→yW⊂⊂λ*7P0XqryyCE20z_P⊂7wλ7w2Pλ7s⊂⊂≥42yrH22{4XryV⊂λ<wzPλ6zyzλ9x2qZs<P⊂≥42P⊂→4v2w_vrP4[εE0r→4z4w[⊂:7P≥42P⊂→2{4qYP70vYW⊂⊂"→{4qr\P⊂:4_z⊂0y→P34v→P⊂9z≤:qz:\2r⊂0\2FE1Xv62rλ24y2Xz7y<H22{4Xry]P≥42P2~yuP0[2⊂22Xz0x2\P0y2H9zqtλ22{4XryWεBεE"{→y<P⊂→4v2P~0yP⊂_P70vYP⊂7sλ⊂7w2H:7P⊂≤t|⊂1Z0y0q]2y9Pλ0w2⊂λ0w⊂7\:4ww_vεE2↑:2w9Zww⊂⊂≠s⊂7w→P⊂:7He  characters.  On  the disk  each  file is
associated    with   some    project-programmer   name    (PPN).    A
project-programmer name consists of  a project code and  a programmer
code, each of which is one to three characters.  All of the files for
a particular project-programmer name are referred to  collectively as
that PPN's disk area.

File  names, file  name extensions  and project-programmer  names are
stored in  SIXBIT representation.  File  names are  left-justified in
one whole word; file  name extensions are left-justified in  the left
half of a word.  If  a filename has no extension, the  extension half
word is zero.  A zero file name is not permitted.  Project-programmer
names are stored in one word  with the project code in the  left half
and  the  programmer  code  in  the  right  half,  each   half  being
right-justified.  For  an example of  all this, the  file RAD.Y[A,BC]
would be represented by the following octal values  and corresponding
assembly language lines  of code (the date  word is included  to make
this four-word block into a sample block for the LOOKUP UUO):

                     OCTAL       ASSEMBLY LANGUAGE

    file name:    624144000000   SIXBIT /RAD/
    extension:    710000000000   SIXBIT /Y/
    date word:    000000000000   0
    PPN:          000041004243   SIXBIT /  A BC/

where 62 is the octal value for "R" in sixbit, 41 is the  octal value
for "A" in sixbit, etc.
                     UFDs--User File Directories


For  each  project-programmer name  (PPN),  there is  a  special file
called the UFD (User File Directory) which contains the names  of all
the files  on that  disk area (i.e.,  all the  files with  that PPN).
Every UFD is a file on the disk area [1,1].  The filename for a given
PPN's UFD  consists of the  PPN itself as  the primary  name (project
code in the left half,  programmer name in the right half,  each half
being right justified), the extension ".UFD" and the PPN  [1,1].  For
example,  the  UFD   for  the  disk   area  [FOO,BAZ]  is   the  file
FOOBAZ.UFD[1,1].  The  UFD for disk  area [1,1]  is "  1  1.UFD[1,1]"
and is  called the  MFD (Master  File Directory).   The MFD  does not
contain an entry for itself,  even though it is on [1,1];  however it
does contain the names of  all the other files on [1,1],  which files
are in fact the UFDs for all the other various disk areas.

Any UFD  (including the MFD)  can be read  just like any  other file.
Each UFD consists of a  number of contiguous 4-word entries,  each of
which either points to a file or is unused.  The first three words of
a file's entry are exactly the same as the first three words  you get
back  from a  successful  LOOKUP (see  page  32) of  that  file.  The
fourth word of  a file's entry contains  a disk pointer to  the file.
The first word of an entry not in use is zero.
                     Disk File Protection System


Each file on  the disk has a  nine-bit protection key  that indicates
who  may do  what to  that file.   To access  any file,  you  must be
permitted  the  type  of  access  you  seek  according  to  both  the
individual file's protection and  the protection of the UFD  for that
file's disk area.  A UFD's protection key thus  automatically applies
to all files on that disk area.

A one in the first bit (400 bit) position of a file's  protection key
means that the file  dumping program DART (that provides  file backup
on magnetic tape) should never  dump this file.  Fkr UFD's,  this 400
bit means that the password for this PPN should be required  by LOGIN
only for remote users.  A one in the second bit (200 bit)  means that
COPY   should  not   delete   this  file   without   getting  special
confirmation; this  preventpε↓CGGS⊃K]iC0AIKY∃iS←\A←LA∧AMSY∀@AoSQPAiQ∀~∃[←9Si←d↓	→Q
AG←5[C]H8@A
←HA+
λ≥fXAi!J@d`@AESh↓S\Ai!JAae=iKGi%←\AW∃r~∃SLAGkeIK]iYdAk]kMKH\@↓)QJAIK[CS9S]NAMKmK\↓ESifPbnn↓ESi`~I↓βπ⊗)βK}[↔84VK;S=π##K↔*β∨K?/βMi↓π##∃β&C'K⊃ε∪'Q↓C	AA↓ε∪'Q%π#↔33~β←#π"βS#∃αβ?←;/⊃β?_hSS#∃ε3'3∃εkπeβ&y↓βSzβS#∃ε3'3∃αA?←v+I	↓εk↔π;~βπ;eπ+O↔Iεc?∨∨.!↓β'rβ←'S@h+S#*βOπ7*αBB9εMβSFQβ?2↓βS#*β≠'3*I1βSF)β7'∃β&CK↔∃ε∪'SMα↓!A]αβ'S~H4+S.c1β←FQβ?&C↔I↓εc?∨∨.!7'9π+O↔K~β7πeε#=↓β>KS!β&C∃β≠Nc∃1β∞s⊃↓β&C∃β3∂≠P4+&CK↔∃ε∪'SMαAAA]ε∪'SMJβS↔3bβ←#π"β;?Qnc?∨∨.!7'9π+O↔K~β7πeε#=9↓ααS#∃∧bV@4WβK'[Nc↔∨∃αCO↔∃πβπ∨∃β	]a%ε#↔S↔⊗k';↔~β←#↔&C↔Iβ&C∃βO.≠?;⊃ε{IβSFKK⊃β?∪?W@hS'Mβ≡C↔∂/.!β←#.qβ¬↓π∪↔≠↔⊗+;∂∃εKMβ7∞#∃βSzβ¬↓β6K3∃β}qβ¬β&KO-↓εK↔¬ε{S#↔⊂h+S#∞qβg?/⊃β?←rq↓α∂␈∪K↔Oε{;∪'v9β''→β'9π##∃βf{∨∨↔"k'97/≠↔Iβ∞s⊃βSF)β;?"h4+3};∨↔⊃nK97W≡+IβC⊗{S↔∂&K?9β?∪?WC~β7↔πrβS#∃π≠π7∃π##';:βWQε3?I↓π##∃β';<4+&K≠≠↔⊗+;Qβ≡cπOO/→↓β?2βWO↔↔→9↓α&C∃↓β≡{3∃β⊗KQβ'r↓βS#*β?←;/⊃↓β∨⊗{WA↓C	A@4V∪'Q%εk↔π;~βS#∃π≠π7∃εMβSF)βS#O∪⊃βO!β'9ε+π∂!ε{→βSF)β?SF+I↓β?∪?WC~↓!E@hQ→↓Eε∪'SMJβWQεCC3N+MβSzβS#∃ε{←;↔∩β?→β&C∃β≠Nc∃84Ph*'9ε+π∂!ε;K?Wαaβ¬↓ε{;∃βNqβS#*β≠'K∨!β'"↓βC?≡KS'?r↓!QAα1↓Q↓ε∪'SMJβ7↔πw_4+SFQ↓β&C∃βW≡+KM↓ε≠?KK/≠C?;&K;≥↓π#=βSFQ↓β?∪?WAεK∃↓εs?Q↓πβ↔K7O#S↔⊃π#<4+≡Cπ;∨*↓βS#*↓β≠'f)∨M↓πβK?S.≠S'?r↓β/↔Jq↓↓α&C'M↓εKM↓↓ε≠π33.!↓αB∀zR⊗∞$J>84UαJ>R,~R&>rq↓α¬π+O↔IεKMβπg;πgMπβ↔K7O#S↔⊃π#=β∂F;∨∃π##∃βπ∪?S↔∨#'?9ε[↔gLhS?→βFKMβ?>q↓β≠Nc↔M9αα¬β?v)↓β'rβS#∃π≠↔∂?v!β'"↓βC?≡KS'?r↓!IAα1↓↓Iε∪'SMHh+7↔∞sMβSFQβSF)↓β∂␈∪K↔Oε{;∪'v9βWO/∪Mβ7∂Iβ;?"↓βK↔∞!βS#*β≠'3*q↓↓αis is
called READ PROTECTION,  and, again, a user  may always read  his own
files.  A one  in the third  bit position (100 &  10 & 1  bits) means
that the corresponding users may not write, alter or delete the file.
This is called WRITE PROTECTION\@AIKCHAAe←iK
iS←\↓M←dA∧@AMS1JAS[AYSKf4∃ae←QKGiS=\Aae=iKGi%←\Ag%]GJA%hASf↓]KGKMgCer↓i↑A←AK\@Q1∨∨↔+@RAiQ∀AMSY∀~∃M←HAeKC⊃S]NA	KM←e∀ASi`~βCK?&+∂S'}qβ∂πrβ∃β≡Cπ;∨.!↓#←O#!αJ,rε6∃Jp4(4TC↔K∃εKMβ¬π≠W77∂∪eβ?2βS#∃εs';∃πβK?S.≠S'?rβ'S5`hPQ$αααλ)∃%~	x5$D	T,i→d8h!Q"αα∧∧αβα∧∧β#β∧∧∧'.↑∧αεv↑lW∩αλH∃∃"∧
p
m≡*+D∧∀Y;-}→+;mm≡(λ	Iqr3D∞_<|n⎇|Yβ!$λλλ∧∧λλλ∧∧λλλ∧[|H
XQ≤kAQHλλ∧∧λ(∧∧L∧∧⊃→;↑→(≤∞-⎇→8nD
⊂sj(≠{MO*+H∧
;]<l\λ≥z.Mλ∃1HNkC"D∧λλλ∧εHλλε⊗λλ
}Z=→$∞≤[⎇\⎇~;md→[|D∞<y<N4≥z=
∧≤x;,T∀∀∪D<h→M≥→+C!$λλλ∧∧hλ∧ε
λ∧
≤[⎇\⎇~;md≤≤[nL8⎇~-⎇H→[n$≠⎇~↑H≠≠l|y9-≥H≥<l↑\kC!$λλλ∧∧
λλ∧εLλ∧
Y89∧∞≤[⎇\⎇~;md→[|D
⎇~→.$≠≠yl|9:-d≥<y..kC"D∧λλλ∧ε(λλεε,λλ
}Z=→$∞≤[⎇\⎇~;md→[|D
⎇~→.$≠≠yl|9:-d≥<y..kC"D∧λλλ∧εHλλεε
λλ
∞[⎇→,>~;{D∞≤[⎇\⎇~;md→[|D
[⎇-Myyy,E:;H∞↑y<\ea"Hλ∧∧λλ
d∧λε$λ∀Y,≤λ≤≤M}→8⎇
≥{H→M}H≠[nE;≠yl|9:-d≥<y..kC"D∧λλλ∧πλλλεε(λ
}Z=→$∞≤[⎇\⎇~;md→[|D
[⎇-Myyy,E:;H∞↑y<\ea"C"JM→(≤∞-⎇→8nM;{H
|H_(∧Z;→$
<h≤l↑λ≥z]Hλ≥
(→Z-L(~<d|Y8.L9λλ¬∞z=~∧∞~→#!(3U⊃*$∃53eDλ≤y,T≤_9lTlj$∧_]=∧x;H,(λ≤n\\y<.\;]≠∂∀_z_-ly9λ∧¬≥z=
∧≥~→!QTQ3H→1(∃*Ykλ≤l\(λ≤≤y(fE+Hλ
⎇→;H∀λ→Z-L(~<d|Y8.L9λ
≤Hλ_$∞≤[⎇\⎇~;ma"[yD∧∧∧~<h∧∞|→8m≤Z99¬Dλ≥~]H≥~Tλ→Z-L(λ≥m≥≠λλ,(λ→m≡Y;H∧∞~→(L9X=-Nβ"\∞-⎇→8nM;{Hm|H≥
=λ∃(hλ≥-m→<|d∞~→(m;→(≥≤Y8,O(→>
≡⎇→9∧¬≤⎇<↑\y9
≥Yc"M⎇→λλm;→(
|Hλ≤l≥9(≠L≥9*+∧∧~;H∞⎇~8z∧∧_x<lT≥~→$∧≤≤[nL8⎇~-⎇H≠yD∧≥~→$
{→β!.Y<\m≥{H≥m≥≠λ_LT→z=L]H≥≠d∞~→(
l=h≥L↑\z;meHλ∀l\(≥~T≠Y>∞D≤_<L≤|X<
∧→[|AQ\y=∞M;Yh∂≥⎇<H
XQ	|d→9X.]≥λλ∞∞[⎇→,>~;{D¬≥z~,=λ≤z
};→λ
m⎇λλ,(_{ml]<y,A"]z.Mλ≥~T∃1Q∧}h≠⎇md≤≤[nL8⎇~-⎇J+C!!"U1HD|h≥
;<y-NY<h≡Y(≤∞-⎇→8nL9λ
≡h→Z-L<j(
≥H≥~T→[{
M⎇z;Lt≥x>.5Hλ∃
#"\L\9<∞-⎇→8nDλ_Z.Nh
ε&Hλ_M≡≤j(
|Hλ_$
1Q	n4λ≤≤M}→8⎇
≥{Hλ
<>(→↑→<[-≥Y#"N⎇→=~↑H_(∞↑y<H<;H≤L\9λ≥
(λ∃(hλ
_.4≥y;
D_<h∞⎇→=~↑H_(∞↑y<H∧x;H∞,89β!,;↑(m;→(
⎇H≥~≡λλ→
≡zh_.,8*+D∧∪{[∂∀≤≤Z.m;→9l\λ≤≤M||X;.4λ
≠
≥y(∪	xr3J!QXx;D∞|Z=Tλ≠|Dz_;L|(≥~Tλ≠X-\(≠yD(λ∃(hλ_N↑λ_(∧∞<y<Dx;H∧z_;L|(≥~Q"\≤M}→8⎇
≥{H~l←(≠yD
~<h
XQλλ∞⎇=~λ∞M→(∀HYP31$
53kD∧∩≠⎇l↑Y<K∧∧≥~→$
Q3P)X#"[-⎇Z=≠n$_{{-\;Yλ<;[[nD_Y(∞↑y9λ∞Mh_z≥Yy(∂≥⎇<H
XQ	|d∞≤[⎇\⎇~;md≥;[↑|c"O≥⎇(~mm⎇hλ∞M→(≤≡|⎇{n 2⊂37\⊂⊂-XK_nW⊂λ*42P≤tvx6→yz⊂⊂≥p|P:≠P⊂1t_w3rP≡wzyεB*c"∪\P⊂89≠z2qz~ww⊂⊂~yP:7H⊂67sH⊂4w⊂≥ytw3H⊂0P⊂≤2y1r[:⊂9tYw⊂⊂∀	TP⊂0\P:42CE22v~vtz2\⊂12z≥rrw⊂≤97u2Xz⊂1wY2P0w→⊂897Yy0vvYy⊂1wY2W⊂⊂∪'cdgλ⊂;tv≠⊂:42[εE0v≠7{P<[zP:7H⊂1t0[3rP:~2P80\y{wy→⊗⊂⊂:~2P*c⊃∪yP8≤7z2q]4ww⊗λ⊂0w2wy⊂:~2FE2→s0zv≥⊂897]2qz4[w⊂37\⊂:40]⊂*c"εEβ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ"4yuH(97u→qz⊗h≤7sy0[vry⊂∪0vryCEεEεB+t2wλ⊂<wzH⊂92s→y2w1YP⊂0Pλ34v2H⊂7w⊂λ:42Pλ24yuK⊂⊂<w]P⊂6z\z⊂⊂9\2qts≡P:42CE897Z2qz⊗\97sy_vvryλ70vrH⊂7s⊂≥42P⊂→4v2S\P7{w→y↔⊂⊂∩s⊂⊂:~2P34[2P⊂4\P<wz\εE7{[⊗⊂:4~yP1p[⊂12P→7w2Pλ1<P4[24qp]4w3P_P(('λ;wy2λ7s⊂⊂≡2y7Wλ⊂)wvYz4vr\VεE4≠{r{2\⊗⊂<w]P⊂;w]v2⊂6~urP0H⊂897Yy0vP≥7P⊂0Xz⊂0yH4s⊂⊂~z⊂;r\2P⊂6≠ssrrλ4wεE≥w22yλ0P24Y32y2[:⊂((∪↔⊂⊂*~4yP1Xw⊂12H0qqw[x64yZ2r⊂;Zz4⊂9→yx2q]⊂:7P→4v2FB92s2\2w1r\P:49≠zst⊂≥42P:\rP7sλ"4yuH(('9H0w2⊂≥42P"∀eh('λ*jgWλ⊂"pqZ⊂57qβE40yH0yywXtpz2Y⊂;tz~⊂4z⊂_P"4yZP(97Z2qz⊗T97sy_vvryλ'0vrH∀:42H⊂"4yZP(('εE0v≤wP1p[62r⊂≥42P S$`iTH:40zλ4yP:\rr⊂;Z2w2{→y⊂:4→P(('λ;wy2λ37y⊂λ0P24\uFE3~v2P9\2qts~qpz4[w⊂1w[:0tw≤P=2y≠W⊂⊂,[zy⊂"~yuP(∀'⊂4yH9rz⊂≥7P⊂<[zy⊂9→pvεE∀('⊂⊂≥t2w⊂λ<wzP≠7sP⊂~w⊂⊂0[2⊂1p[⊂⊂12H⊂1t0[3rr⊂≥tz4⊂λ:42Pλ6ww4]7y⊂ S$`iFB1wvvXw2≥P~z⊂⊂1Xw⊂0v≤wP12H⊂1t0[3rr⊂≠y⊂92]94r{→r⊂⊂;Zz4⊂:~2P⊂"∀eh('λ*jgWβE*4:\P4s⊂≡wzP⊂≤x2qtY<P0P→4v2P≥tz4⊂λ0P=2\7P((∪⊗⊂⊂:~2P89≠u2qzx97s\0vvr\εE70[rP7sλ⊂<wz\⊂"4yZP⊂((∪⊂∀<w]y⊂0v~pyTPλ;tv6λ12P⊂_yyzvYr⊂37\⊂⊂:4→P34v→WεE*~4yP6Yz47rλ27ryH77z⊗λ47{r]2y⊗⊂_v67{H<wzP≥4wv0]2P0w≡P⊂89≠z2qz~ww⊂5Y|yFE→7y⊂:~2P34[2yP⊂≡wzP9→s2y2[1rW⊂λ*42yYP⊂89≠z2qz~ww⊂5Y|yP0\2P⊂0\864rY⊂:7FB<wzyλ92pvλ∀67sYrr⊂⊂~w∀P(∀'⊂:7H⊂9rrH4s⊂<[zP⊂0\2P82\6tz:→r⊂:4→P⊂5t[2⊂7sβE0qqYyyP<[zP0y→P92x]ryz4[3P37\⊂:42H34v2KεEβ")eh∀'⊂⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂X~≠Vλ b)≡M___≠LnP⊂!Pf&$P
___≠LFE⊗VKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVFEλ⊂⊂⊂⊂λ⊂⊂&gU"P⊂⊂⊂aV-↑_wr2←↔FE⊂⊂λ⊂⊂⊂⊂λ")eh∀'⊂ aKεEεE⊂wr2Pλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ&rpw~w3FEβE_⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂)2]:y7⊂≠{w⊂"~yuP(∀'⊂4wλ aWεB⊗XP⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂)2yYz⊂7{[⊂"4yZP(('λ:7P6≠ssrrλ4w⊂(∀'↔εE⊗⊗7⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ)2z:\7⊂:4→P"4yZP(('λ7s⊂5≠q⊂7↔βE≡89≠u∨⊗⊗⊂⊂⊂⊂λ⊂⊂)r]⊂7{wλ"4yuH(('⊂≥7]⊂≡≤97u∨⊗≡67Ysrr⊂~w⊂89≠sW⊂7_vr←↔βE≡89≠u∨⊗⊗∂897sO⊂⊂)r]⊂7{wλ"4yuH(('⊂≥7P:4_z⊂4wλ aWεBεEεE∃42P⊂λ")eh∀'⊂⊂*UgP⊂⊂~yP⊂:\rr⊂⊂λ:7P⊂_t0w3YP⊂⊂7\⊂⊂92]94r{→P⊂⊂<[zy⊂⊂⊃4yuFB(97u→qz⊗h≤7sy0[vry⊂∪0vrP≠y⊂:7H92z9~r{2P≥42P"~yuP(∀'⊂7sλ⊂9wvYww2P→v9rWβE*42H0qz4[w⊂:0Zrw⊂1≡P:44\P*jgH4yP2→z2y6Zw2r⊂_<P:4→P1wr→P4w⊂⊂aW⊂⊂λ$s⊂ PFE1w[:0tw≤P⊂=2\7V⊂<[zy⊂⊂_zy92[:⊂⊂"~yuP(∀'⊂⊂4\P⊂92]:y72Y⊂4w⊂λ aW⊂λ⊂$s⊂⊂aFE1[w:0t[9P⊗XK⊂<wz\⊂⊂"4\uP((∪⊂4yPλ92yr]⊂:7P≡wzy⊂λ67ssYr⊂4wλ(('↔λ⊂⊂$sλ aFE_ww:0Zw9P0H57q⊂≠:vq2\⊗⊂:4→P"4yZP(('λ37y⊂≥40z⊂~7q⊂4\P92z≥y72r∞P⊂4sλ:42FB57q⊂~yP⊂7≠z⊂67Ysrr⊂~w⊗⊂⊂≡2y7P~yP⊂9→z:y7→r↔⊂⊂∩s⊂:4→P⊂94Yt:⊂4_v3⊂⊂≠s⊂ aCE1ww≥0tw9H=2y7H0w2⊂≥42P6→s:⊂4_v3⊂4\P77w⎇2y7K⊂:42[⊂:42H()'e⊃aj⊂8_y:⊂7YεE<w]y⊂"4\uP⊂(∀'⊂4yH9rz⊂λ:7P:~2P⊂8≤7u2q]⊂9x2Xts4rY⊂1<Pλ aP6→s:⊂⊂_w2⊂:~2FE(∀'ci Sfbi⊂≤0y:⊂λ4yP9Yz⊂:7H⊂:42H897s\0vvr\⊂1wr→P⊂:w→2y⊂;Z4qt⊂λ<wzP_y2FE≠7ssrY⊂4w↔λ⊂$s⊂_7z4⊂~0v;2\P7s⊂⊂aP0y→P77w⎇2y7H0w2⊂⊂aP⊂2≠ryw∪]⊂1ww≥0twεB⊗XV⊂≥42w⊂≡wzy⊂⊃4yuP∀('⊂4\P⊂9r]⊂:7P≥42P(∀'⊂9x→qts4Yr⊂1<H:42Pλ;t7v→P aWβE'7P→y97yλ1t2qZtw3P~yP27[2P:7H⊂6puYP9zy→P aP~7v29H0P62Ypv⊂⊂≠y⊂2|~yz4w→FE((∪↔εE                     2.8  Initializing a Device


There are two UUOs available to initialize a device: the INIT UUO and
the OPEN UUO.  Either of these UUOs can be used; the  only difference
between them is the format for passing parameters to the system.

Each of these UUOs tells the system what device you want to use, what
mode you want to  use it in, where  your buffer headers are,  if any,
and what channel number you  want to associate with the  device.  The
mode is specified  in a half  word value which  is used as  the right
half of the initial I/O status word for the device.  If the device is
a  non-sharable  device (such  as  the line  printer,  a  terminal, a
dectape or a  magnetic tape) which is  not available now,  the system
will normally  type out  a message asking  if you  will wait  for it.
However, the  following bits  in the  data mode  half word  which you
specify when  you attempt  to initialize  the device  can be  used to
indicate special action to be taken.

    BITS   OCTAL         MEANINGS OF 1'S IN THE INITIAL DATA MODE

    26     0,,1000       Wait automatically  until the  device is
                         available.

    27     0,,400        Take error  return automatically  if the
                         device   is   busy.    This   bit  takes
                         precedence over bit 26.

If  you want  to have  your program  wait automatically  without your
being asked, you  should have bit  26 (the 1000  bit) on in  the data
mode  half  word.   If  you  would  like  to  get  the  error  return
automatically when a device is busy, you should have bit 27  (the 400
bit)  on in  the data  mode.  The  automatic error  return  bit takes
precedence over the automatic wait bit.  Note that these two bits (26
and  27)  are  among those  reserved  for  device-dependent features.
Thus,  if you  have either  of these  bits on  when you  initialize a
device, you should use the SETSTS UUO (explained in Section  2.15) to
turn them off after you get the device unless you want the particular
features they represent for that device.  See the device  writeups in
Section 13 for the meanings of these bits for the individual devices.

A  device can  be referred  to  by either  its PHYSICAL  name  or its
LOGICAL name.  The  physical name of a  device is the  permanent name
given  that  device  by  the system.   A  logical  device  name  is a
temporary name that can be specified with the monitor ASSIGN command.
Device  names  (physical  or logical)  are  stored  left-justified in
sixbit representation.  For  example, the device DTA1  is represented
by the octal number 446441210000,  which can be set up by  the SIXBIT
pseudo-op in the assembly languages, i.e., SIXBIT /DTA1/.  If a given
device name  is both a  physical name (of  one device) and  a logical
name (of another device), the logical name takes precedence.
INIT            [OP=041]
--------------------------------------------------
        INIT <channel number>,<data mode>
        <physical or logical device name in sixbit>
        OBUF,,IBUF
        <error return>


The INIT UUO initializes the named device on the channel indicated by
the AC field and in the  data mode specified by the address  field of
the instruction.  OBUF should  be the address for your  output buffer
header or  zero if  none.  IBUF should  be the  the address  for your
input buffer header or zero if none.  If you are not going to  do any
buffered output on  this channel, OBUF can  be zero.  If you  are not
going to do any buffered input on this channel, IBUF can be zero.

See the explanation  above of bits 26:27  in the data  mode half-word
for selecting action to be taken automatically if the device  you are
trying to INIT is busy.

The INIT initializes the  3-word buffer headers by zeroing  the first
and third words (indicating that there is no buffer ring and no data)
and by setting up the left half of the byte pointer (second  word) to
contain only the byte size (which is detemined by the mode).   If you
want to use a byte size other than the standard one for the  mode you
are using, you can change the byte size field after the INIT is done.
The system will then  still correctly calculate the byte  count which
it places in the  third word of the  buffer header after an  INPUT or
OUTPUT UUO.

The data  mode half word  is used to  set the right  half of  the I/O
status word for this device.   The IOACT bit, however, is  masked out
when this  is done.   (The I/O  status word  is explained  in Section
2.6.)

When  you  initialize  a  device,  any  device  open  on  the channel
specified is released before the new device is initialized.  (See the
RELEAS UUO in Section 2.12.)

If  there is  no device  with  the name  you give,  the  error return
(double skip) is taken.  If  this UUO is successful, the  triple skip
return is taken.
OPEN            [OP=050]
--------------------------------------------------
        OPEN <channel number>,ADR
        <error return>

ADR:    <data mode>
        <device name in sixbit>
        OBUF,,IBUF


The OPEN UUO does exactly the same thing as the INIT UUO  above.  The
difference is that the information passed to the system by  OPEN does
not have to appear in line with the instruction stream.  The location
of this information is specified by the effective address of the UUO.
Hence OPEN  can be used  by reentrant programs  that change  the data
referenced by the UUO.

The left half of the data mode word is ignored.
                    2.9  Setting Up Buffer Rings


For buffered I/O,  a buffer ring  must be set  up in your  core area.
Unless you issue  an explicit buffer-creating UUO  (described below),
or make the buffer  ring yourself (very carefully!), the  system will
set up a buffer ring for  you when you first give an INPUT  or OUTPUT
UUO.  That is,  if a device open  in buffered mode has  no associated
input  (output) buffer  ring  when the  first INPUT  (OUTPUT)  UUO is
given, the system will set  up a two-buffer ring before  carrying out
the normal function of the  UUO.  To do buffered input  (output), you
must have given the address of the input (output) buffer  header when
you initialized the device.

Whenever the system sets up a buffer ring for you, it places the ring
at the address contained in JOBFF in your job data area (see Appendix
2).  You may cause  your buffers to be  set up anywhere in  your core
image by temporarily changing JOBFF  to point to the place  where you
want the buffers  to be.  If there  is not enough room  between JOBFF
and JOBREL for the number of buffers you request, your core  image is
automatically expanded to make room.  After the ring is set up, JOBFF
is left pointing  to the first word  beyond the ring and  your buffer
header is made to point to the first buffer in the ring.

The following UUOs cause a buffer ring to be set up, and  they permit
specification of  a non-standard number  of buffers  and non-standard
sizes.
INBUF           [OP=064]
--------------------------------------------------
        INBUF <channel number>,<number of buffers>


The INBUF UUO causes an input  buffer ring to be set up in  your core
area and to be associated with the specified channel.   The effective
address of this UUO is interpreted as the number of buffers  the ring
is to have.  If the effective address is zero, two buffers are set up
(the same number of  buffers you would get  if you did not  give this
UUO at all).
OUTBUF          [OP=065]
--------------------------------------------------
        OUTBUF <channel number>,<number of buffers>


The OUTBUF UUO causes a ring  of output buffers to be set  up exactly
as INBUF does for input buffers.
UINBF           [OP=704]
--------------------------------------------------
        UINBF <channel number>,ADR

ADR:    <number of buffers>
        <number of words of data in each buffer> + 1


The UINBF UUO causes an input  buffer ring to be set up in  your core
area and to be associated with the specified channel.   The effective
address points  to a two  word block.  The  first word of  this block
contains the number  of buffers to be  in the ring (zero  means two),
and the second word contains  a number which is one greater  than the
number of words of data in each buffer.

Some devices  (including the disk)  do not accept  nonstandard buffer
sizes.  Devices that will accept nonstandard sizes  include terminals
and  magnetic tapes.   For other  devices see  the  individual device
descriptions in Section 13.
UOUTBF          [OP=705]
--------------------------------------------------
        UOUTBF <channel number>,ADR

ADR:    <number of buffers>
        <number of words of data in each buffer> + 1


The UOUTBF UUO causes a ring  of output buffers to be set  up exactly
as UINBF does for input buffers.
BUFLEN          [OP=047, ADR=400042]  CALLI 400042
--------------------------------------------------
        MOVE   AC,[<device name in sixbit, or channel number>]
        BUFLEN AC,


The BUFLEN  UUO tells  you the  standard buffer  size for  the device
specified by the contents of  AC.  AC should contain either  the name
(logical or physical) of the  device or the number of the  channel on
which it is open.  The buffer  size, which is returned in AC,  is one
greater than the length of the data portion of a buffer that would be
set  up if  you did  an  INIT and  then an  INBUF or  OUTBUF  for the
particular device.  This is the  number you would need to use  to set
up a standard size  buffer with a UINBF  or a UOUTBF UUO.   The total
number of words  each buffer would take  up is two greater  than this
number  (see Section  2.5).   If there  is  no such  device,  zero is
returned in AC.
                         2.10  Opening Files


After  initialization  of  a directory  device  (e.g.,  the  disk), a
particular file on the device must be opened (i.e.,  selected) before
any I/O can take place.  Opening of a file for input is done with the
LOOKUP UUO; opening of a file for output is done with the  ENTER UUO.
An ENTER done  after a LOOKUP  of the same  file on the  same channel
opens the  file in Read-Alter  mode, which is  explained on  page 35.
The  RENAME  UUO  is   available  for  changing  a  file's   name  or
specifications (date  written, protection, etc.)  after the  file has
been opened.  RENAME is also used to delete files.

If you  initialize a  directory device and  attempt to  transfer data
with an INPUT (OUTPUT) UUO without having done a LOOKUP  (ENTER), the
system will type out a message and require you to type in  a filename
so that a LOOKUP (ENTER) can be done before the data is transferred.

For  non-directory devices,  the UUOs  LOOKUP, ENTER  and  RENAME are
no-ops; they always take the success (skip) return.
LOOKUP          [OP=076]
--------------------------------------------------
        LOOKUP <channel number>,ADR
        <error return>

ADR:    <file name in sixbit>
        <file name extension in sixbit>
        <this word is ignored>
        <project-programmer name in sixbit>


The LOOKUP UUO  opens for input the  file specified by  the four-word
block pointed to by the effective address of the UUO.  The first word
of the block should contain the  sixbit name of the file to  be read;
the second word should contain the sixbit file name extension  in the
left half.  If the device is  the disk, the fourth word of  the block
should contain the project-programmer name for the file or zero; zero
will cause your current Disk PPN to be assumed for the file (see page
20).  The right half of the file extension word is ignored as  is the
whole  word   following  the  extension   word.   For   dectapes  the
project-programmer name is also ignored.

A LOOKUP always does  a CLOSE of the  input side of the  channel (see
Section  2.12)  before  attempting to  open  the  specified  file for
input.  If  the LOOKUP is  successful, the skip  return is  taken and
some information about  the file is returned.   If the file  does not
exist or if some other error condition arises, then the  error return
(no skip) is taken and, if  the device is the disk, an error  code is
returned  in  the right  half  of ADR+1  (the  rest of  the  block is
unchanged).  If you try to LOOKUP a disk file that is  read protected
against you,  then you  will get  the protection-failure  error.  The
disk error  codes for  LOOKUP, ENTER  and RENAME  are explained  in a
table on  page 36.  Every  LOOKUP, ENTER or  RENAME error  leaves you
with no file  open on the offending  channel except that after  a BAD
RETRIEVAL error of code 11  you are permitted to RENAME  the garbaged
file.  No error codes are returned for dectapes.

After a successful LOOKUP  of a disk file, the  following information
is returned  in the LOOKUP  block.  The word  at ADR+2  contains: the
file's protection in bits 0:8 (777000,,0 bits) the data mode in which
the file  was written  in bits  9:12 (740,,0  bits), the  file's time
written in bits 13:23  (37,,770000 bits), and the low-order  =12 bits
of  the file's  date written  in bits  24:35 (0,,7777  bits).   The 3
high-order bits of the file's date written are returned in bits 18:20
(0,,700000 bits) of  the word at ADR+1.   These values are  stored in
the directory when  the file is created  and may be changed  with the
RENAME  UUO (see  page  34).  (The  date  written is  in  system date
format which is explained under  the DATE UUO on page 165.   The time
written  is  in  minutes  past  midnight  on  the  date  given.   The
protection  bits  are explained  on  page  19 and  the  data  mode is
explained in Section 2.2.)   The word at ADR+3 contains  the negative
swapped word count, that is,  the negative of the number of  words in
the file, with the left and right halves exchanged.  (The  word count
is  returned  in this  strange  format to  be  compatible  with DEC's
format.)   Finally, bits  21:35  of the  word at  ADR+1  contains, in
system  date format,  the "creation  date" of  the file,  which  is a
slightly less  than well defined  quantity.  The date  written, whose
high-order part is in bits 18:20 (0,,700000) of the word at ADR+1 and
whose low-order part is in  bits 24:35 (0,,7777 bits) of the  word at
ADR+2, is the usual date of interest.

Here is a summary of the information in the block after  a successful
LOOKUP on the disk.

ADR:   <file name>
ADR+1: <Bits 0:17 (777777,,0 bits): file name extension;
        bits 18:20 (0,,700000 bits): high-order bits of date written;
        bits 21:35 (0,,77777 bits): "creation date">
ADR+2: <Bits 0:8 (777000,,0 bits): protection;
        bits 9:12 (740,,0 bits): data mode;
        bits 13:23 (37,,770000 bits): time written;
        bits 24:35 (0,,7777 bits): low-order bits of date written>
ADR+3: <negative swapped word count>

WARNING!  You may not  do two consecutive successful LOOKUPs  for the
disk   with  the   same   four-word  block   without   rerβi←e%]N@AQQJ~∃Ae←UK
h[ae=OeC[5KdA]¬[J@A%\AiQ∀@AM←UeiPA]←eHA=L@Ai!JAEY=GV@A¬MiKd↓iQJ~)MSegP@A→∨=↔+ BA)QJA]KO¬iSmJ↓goCaAKH@A]←eHA
←k]hAae←	CEYrAoSY0A]←h4∃eKaIKgK]PAiQJ↓!!≤Ae←jAo¬]hB~(~∃βMQKdABAgkG
KggMUXA→∨=↔+ @↓←\ABAIKGQCaJX↓iQJ@↓M←YY=oS]N↓S]M←I[CiS=\~∃o%YXAE∀AM←k9HAS\↓iQJA1∨∨↔+@AEY←
Vt~∀4∃β	$h@@@y→SYJA9C[J|4∃β	$,bt@y	Sif@@tbn@ nnnn\nXX`↓ESif$tAMS1JA]C5JAKqQK]gS=\v~∀@@@@@AESQf@bphd`@P@XXn`@```A	SifRhAQSO [←eI∃dAESQfA←L↓ICiJ↓oeSiQK\v~(@@@@@@AE%if@dDtfj@ `XXn\nnnA	SifRhA]k[	KdA←_AMS`↔≠Qβf{∂-β}1β≠'f)x4*"I-IR↓r''→↓Ai∪→↓!];9]]]ba]]Aβ↓AβO#M%iπS↔K=Xh)↓↓α↓↓↓↓ε∪'SMβ⊃QiM*↓!A1c9]]]ε∪'SMKQβ3?:k?K∪/⊃β''→β?→ε#πS∃π;K'S&+9x4T
∩I-≠Q↓s[∞cW∃β7∪?5↓'#!β←␈∪⊃β?2α⊗:R-⊃β3}≠-β←F+9β≠Nc∃β←∂→β∂K.S↔⊃ph(2⊗:$*I↓↓α↓↓↓↓α↓↓αn⎇↓uA]=h4)5ji555ji555ji555ji555ji555ji555ji555ji555ji555ji544R↓↓↓↓α↓↓α⊗u"⊗I↓f≠#π;v+1β;.k↔Irbε∩HhQ↓↓↓α↓↓↓↓f+KK?∩βK↔S/∪9x4Ph*ε∩∪Q↓↓↓βc≠'3*β;π7*β'9β≡Kc'#p4)↓α↓↓↓↓α↓s≠'f)β;πn)β↔c&+;O'}qβ'9π≠'cO!y11f≠K↔π&K?9β&S∃xhQ↓↓↓α↓↓↓↓gβK?S.≠S'?rβ/↔eεK9βO#M↓ASA↓!];9AAAbaAβO#M%xhQ↓↓↓α↓↓↓↓gβK?+.≠Q7C⊗{∨Kπnk↔Iβv7∃xhP4(4U##∃α,rR⊗I¬*V=β␈β↔;Mε3?Iβ␈+SCW"βS#∃ε3'3∃π;'S!π##∃β∨β↔∂'6K∂πSN{;Mβ>K[↔8hS'9β&C∃β≠␈+I7←␈∪⊃βf{∂-βε{';S.!βS=ε∪eβSF)β↔≠6+∂S'6)βπ∪'∪↔OMε{→βSF)αVVxh+πMεK;∪'≡S↔⊃ε?[*q↓αSF+K∃β∂∪∃βSG∪↔∃β≡O↔Mε{→α⊗u"⊗Iiα↓E%α∨∪↔πSNs≥β;/84+≠Nc∃iβvy↓β?f!β≠'f)↓β?2βOπ7*β;π7*↓βπ3⊗+π∪eε+c'O'→m↓↓∩IαOWε+KO↔&K;≥β}c⊂4+6K3∃iε9β?f!β≠'f)β?→π##∃↓π≠π7∃εsπ7∃ε+c'O'→βπ;"β←'3bβ∃↓π∪↔C3∞≠↔⊃β>KS 4W##∃βv+]β[/∪O'?rβ←#↔rβS#∃αβ;↔]π3↔KON{9β'~β∂3?≡+⊃mβ∞s⊃↓↓~Iαπ3&+K';:β?3⊂hS∪'OZ↓β≠'f)iβSF)↓β≠Nc∃↓β∨β↔∂'6K↔⊃β∞cK↔π'I↓β↔FKOSMαβ?9β&C∃↓β&KO-↓ε;⊃βλh+OW≡≠↔OO7+1α2|z.VAε{→βSFQβ≠Nc∃β#∂→β↔.qβ∪?v)β?9π##'Mε≠#π;v+1↓↓F;⊃βvx4*∞dzN∃↓εCπMβ⊗+↔9↓ε#?;∃π≠';∂*↓βS#.q$↔SF)α⊗:$*I↓β␈β↔;Mπ##∃↓ε{3⊃↓ε3'3∃εK84*⊗+π⊃6∞cS↔Iεk?∪∃α↓#←#N≠!β'~β↔cCf';↔"↓β↔f{]β?rβCπ∨*↓↓MUJq↓α'r↓βπ3bβ?_4W##↔O*β∂πO/→1↓α,rR⊗Iε#?↔Mε	↓α∞dzN∃β}1βS#*↓β?W'βWQβ≡K∪∃β}1↓βSF)β∂#∞s;↔0hQ#O↔*αO↔∂&K?9↓∩qEI%ε∪↔≠?⊗)↓βπ'#↔7C&K;≥β&yβ?C.qβS#*βOC↔≡K≠'↔"↓β≠'f)β≠?⊂h+?W'βWQ8hP4*≠␈⊃βS#*β∪'OZaβ'→π##∃α¬α9↓βO→βk↔⊗y1βg␈+Iβ∂/∪K↔;"α∪'OZαBB9αβ'Mβ∂≠OW7.!84*∞3S↔Iε	↓βO.≠∂↔O≡3W1α,rR⊗Iαβ?9β&C∃β∪O≠-↓↓F3?Iβ∞se↓β}1βS#*↓βS#⊗+∃β∂∂≠↔L4Vk↔;SN{;↔⊃JβS#∃ε3'3∃?→↓βSNk∃βπv!β∪π&)β←KO#S↔9αβπK∃π≠↔Qβ&y↓βSF)β∂W↔∪↔;PhSS'7*βπ;⊃αβ∪πS*β←#↔rβS#∃αα⊗:R-⊃β'Mε#?;∃r↓↓απg≠=1β∞3S↔Iαβπ;eπ≠W∂∂/≠O≠W`h*⊗:$*I1β&C∃αB∧qβπ;"β;π7*β?→β&C∃β+}⊃β∪?Ns≥βSF)α⊗:$*Iβπ⊗)βOS␈∪↔⊃↓εK9βSF(4+≠Nc∃∨Mπ∪↔SKN+[π1ZβO↔∃αβ∪'OZα6Rε∧)β≠Wv≠S'?r↓↓EQαC≠?Iπ∪↔π∪Ns≥↓β
β≠'3*;L4+⊗+SK'/3π1%ε{9βC∞;∃↓IC⊃84(hR'→β&C∃β∪/3'∂∃εKMβ¬ε#↔∂S∂β∃1β&C∃β≠Nc∃∨Mεsπ7∃ε;⊃β/CS↔;≡K?9β∂∪∃β←⊗KSS↔ph+';&y↓βSF)↓β≠O∪OQβ';=↓β>{K∪Mαβ?→↓π##∃β6K3∃∨~↓β∪'⊗+∂S?↔I↓β↔w#Ke↓ε{9βSF(4+∪.≠SπC*q↓αSF)βK'>CQβ#∞c→β?2βS#∃ε+cS↔w≠'?9π;?K⊃εK9βSF)↓β∪O∪↔∂S␈∪eβ∨/#L4+&C∃β;.k↔Iαβ?→β&C∃β≠O∪OQ↓ε#↔∂S∂β∃βf{∂-β∞c3?∂∂#↔⊃↓π#=βSF)↓β≠Nc∃9↓¬##∀4W##'K"β←?K"↓β?→π##∃β6K3∃∨~↓β∪'⊗+∂S?↔Iβ↔;'∪eβ∨/#M↓β&C∃β∂/∪K↔;"↓β∪π&)β'8hSOgO&+5β∪∂#∃↓β6{K7π"aβπ;"βS#∃αβ≠?W↔#!β←␈∪⊃β?2↓βS#*β∪'K.≠S?KJ↓β↔;'∪eβ'_h+∂?εK↔⊃β7∪?5β&C∃β≠␈+KS!π;?K⊃ε{→βSF)α⊗:$*Iβf{∂-9αα;?Kn1βC⊗{∂↔∪/∪∃β≠␈⊂4+←⊗KS';:β∪W7αβ7?∪*β≠'3/→β'MαβS=βπ+QβSF)β∪Wo↓β7?&)β∂?nkπ;⊃α↓#←#N≠!β←Nc04+?∪'S∃ε{WQβ&C∃↓β.sS'K*β≠'3*Iβ';&yβS#*↓β≠?/∪S!β>{K⊃β}1βS#*↓α⊗:$*Iβf{∂,4V∪↔≠?⊗)βS#*α⊗:R-⊃β'Mε#?;∃π≠=βSFQβ¬π≠WO/W↔;"α2>>]*Aβ←Nc1βK/#WK9π##'LhS←?K"β←#'≡Aβ∂?w#π';~βS#∃εc↔;∨&A↓β?2βS#∃ε3'3∃r↓α'9ε∪W≠≠/∪↔⊃↓εk?∪∃bβS#'_h+←?⊗!βO#␈+3⊃β⊗)↓βk/∪=βOzβS#π"↓βS#*β≠'3*β←'3b↓β;?"βπCC.IβSz↓β#π6)β↔.p4+←⊗KSS↔rβ'9β'+7Aβn{∪∃8hP4*←F+9βSF)α⊗:$*Iβ'~β∂K↔∂#';≥ε	β;↔:β≠'3*↓#∂π≡)↓Eβ∞∪?[∃Jβ?9β&C∃β∪O≠-1β&C∀4+6K3∃∨~↓βCK␈#↔∂SN{9β'~↓βO↔"β≠K?j↓β''→↓AiB↓↓!];9AAAbaAβO#M%↓ε{→αε%⊃-H4W+;3↔∨→βS#∂!β≠'.c⊃β'~↓AAAb↓β'9π;#'∂Bβ∂πO*βS#∃ε#↔≠π.cQ↓β6K3∃βπ∪?S↔∨#'?8hS?→β&C'M↓ε3'3∃?→αV~"β'M↓π+O↔⊃r↓α←#.qβS#*↓α⊗:$*Iβ'~βOWC/∪O↔∪Ns≥↓β∞qβ?3 h+≠'f)↓#∂∂≠∃↓Iε?[*Iβ?9αβS#∃ε#'O-bβS#∃ε3'3∃?→βCK␈#↔∂SN{9β'~↓βπ∨∞K9βO/ 4+≠⊗{5βO#M↓ASA↓!];9AAAbaAβO#M%β}1αε∩∩YIβWvc↔OMπ##πQε3'↔3"β'M↓β↓AA1εK84+>C'∂!ε≠πO∃π##∃βπ∪?S↔∨#'?9ε{→βSF)β≠'f)β↔Ns≥βO/β↔KO.#↔⊃β>K31β⊗)βCπ∨≠↔⊂4W#=βSF)β;↔:β[↔K≡K?99αα←#↔r↓βS#*α⊗:R-⊃β?C.sMβ¬ε#'O-ε3'3∃αβ'9α⊗+π⊃6∞cS↔HhS7?∪*↓#∂π≡)↓Mβ∞∪?[∃JaβS#*βCK?&+∂S'}qβ?→π##∃β6K3∃βO→β;?"β∂#πv;↔⊃β.s3↔O_h+'Qαβ'M↓β↓AA1αβ'9↓π;#'∂B↓β∂π≡)βS#*↓β≠'f)↓β'~↓β∨'6+9↓β&C∃↓β&+≠πWg!β≠'f(4+C⊗{S↔∂&K?9β}1β'S~αV~⊃ph(4*N1βS#*↓α⊗:$*Iβ'~βOW∂≡+OO≠.a1↓β&C∃βO↑KAβK/#WK9αβ'Mβ&/↔9ε;⊃1αβ≠?Iπ##∀4V#'O-bβ↔cπ∨#3eβ&C∃βO∞k∃β'v3?K7∂#'?9εKMβK/#WK;.!β'9π##∃β⊗c?∂-αβπMβ∞3S↔HhS¬βO.≠∂↔O≡3W1αdz>.Vα↓#O↔*βS#∃∧b>>.-↓αVVzβπ?6)βπ;"β;?S*βS#π"β≠?Iε	β;↔8h+≠'f)βS#*↓β←?⊗!β∂?.sQβ'~↓βk↔⊗y%9↓∧K→βg␈)↓βπ⊗)βOWε+KO↔&K;≥β∞q↓β?f!β∪'≡X4+≠Nc∃↓β>KS!↓π##∃β≡7∃↓εsπ7∃b↓βS#.q↓βSF)β?3"↓β≠'f)∨M↓ε≠K↔π&K?9↓ε#πS∃εKL4+⊗+SWKv+⊃9↓¬;'S!ε	βOW≡≠↔OO7+1α⊗u"⊗I↓ε{→β¬ε#↔∂S∂β∃β≠Nc∃1β&C∃↓βw+7↔∩β?_4W##∃↓ε3'KO"β3?≡Y↓βπfc?∂π&+⊃βSz↓βS#*β≠'3*↓β'Mπ∪↔SW⊗s↔⊃↓εK9↓β⊗KSM↓∪	iMThQ!A1c9]]]:β'S~Iβ?→ααε∩I[	mβSF)βK↔n';∪/⊃β?→αβS#∃∧*:R⊗∩β3?≡Y↓β'~β3↔≠ h+W;≡Cπ;∨.!9↓αN1βπ9∧*:R⊗∩β≠π'g→β≠?∩βπ;eπ∪↔πO}q1βSF+9βSF)↓β;zkO/'αβ↔KK␈⊂4+K/#WK9εKMβS∞[↔9β∞s⊃1βN1βS#*β∪↔[N≠∃β'~βS#∃ε#'O-bβ¬β∂}#∃β'~βK↔S/∪;↔⊃εK84+&C∃βKN;#QβF3→β}1αε∩∩YE↓#&C∃βK/≠Qβ?2βS#∃ε∪3?∂Zβ'Mβ.s∂#πv;↔⊃%r↓α'→πK?T4W#Keβ&y↓α⊗u"⊗Iβ
β≠'3*↓βS#∂!β'Mπ;K'S*↓βCK␈#↔∂S.!βπ∨∞K;OQπK?U1αβS#↔rβg?ThS←'3b↓β∨↔"βS#∃αβCK?&+∂S'}q7≠πNcWK∃ε+KK?∩q↓↓α&C∃β∪O≠-↓β/∪K?Iαβ∂?∪/→β≠?⊂h*2>|ZVA1∧*:R⊗∩βπ;⊃¬∩⊗:εl)βπK*β↔cCf';↔"β'9β
βSπf)β?9πβπ∨∃α↓MY9αα↔[↔↔H4*2|z.VAbα⊗:R-⊃↓β?∩αJ⊗:j∃β↔↔∪?I↓εc↔π[/→βg?*β←'SB↓β;=ε3'3∃ε{C↔9αβ?9β&C∀4+}3≠↔;&K;≥β≡Cπ;;.aβ↔c≡+CQβ&CπQβ∞3S↔Iε	α
ε"αJ⊗R∀J⊗Zεbβ↔KK␈⊃β?→αβ∂?∪*↓ED4WK?Uβ∂∪∃βC/∪7'S&+⊃↓β&yαJ⊗t
6∃β&C∃β∨∂∪π∨.!↓β≠Nc∃9↓∧s=β↔↔∪?I↓ε≠?∪↔~βπK∀hSK↔S/∪;↔⊃ε3?Iβ&+∂Sπε+M84Ph*π9∧*:R⊗∩β∂π9ε3π'1ε3?Iβ
β;W7⊗+Iβ?2βK↔π≡{;M9αα'Qβ>K31β6'1βN1↓βSF)β≠'f(4+;∞k∃↓βO→βk↔⊗y1↓βN1βS#*↓αBBr↓#?Iαα∪'OZαBB9J↓β'MεK33↔>11↓εK→↓β&C∃β≠Nc∀4+∞cK↔π'Iβ↔cO≠SM↓ε;⊃βO→β←KO#∃↓βπ∪?S↔∨#↔⊃β∞;π';∨!βg?*a↓β'2βS#∃αβ≠'3*β'L4V3K↔∞#eβ?ε+9β≠␈⊃β?W'βWQ↓F∪eβπwK?;∃Jaβ'→π##∃β&+['∂*β'Mβ
β∪↔∂&C∃β>C'∂ hS'Mβ∞cK↔π'Iβ≠Wfa1β?∩β'→βN{Uβ#∂3∃βπg∪↔π∪Jβ∪?;*β¬α2|z.VAε{9βSFKMβ∂F;;↔`h+π;"βS#∃ε3'3↔v7∃β6{IβSF)α⊗:$*Iβ∪}+Mβ;␈!βπ∨⊗+∃β←O#!βSFQβ∨O3↔9↓εK9βSF(4*2|z.VAαCO↔∃¬∪↔π⊃l3S↔∩β7?∪*β≠?Iπ##∃β&KO-β}qβCπ>)↓MUJp4(4U;'S!ε	βOW≡≠↔OO7+1α⊗u"⊗I↓ε{→β¬ε#'O-ε3'3∃αβS=β∨+C↔K≡+∪∃β∞qβ?3"↓β≠'f)β?_hSS#∃π≠π7∃εsπ7∃bβS#∃ε{3⊃β6K3∃↓π;'31ε∪∃βK/β3π∂.!β←'&AβS#*β;↔]αβ≠'3*α↑"⊗ph*R"*α:⊗]αα~&2*α&Mα≤b>N⊗"q↓↓α.sS'1π##πQπ#'7∃b↓βπ;JβπSS.kCQβ&y↓βK.⊃βSF(4+Oε+∂'≠N+⊃↓β6K3∃β>K31↓ε∂∂↔∨→βS#*↓β?3"β≠'3*q↓↓α∞3S↔Iπ##∃↓εs↔]↓ε3'3∃εKL4+≡c?O↔"a↓βπwIβπS&+7CQαβS=β⊗+π⊃↓π##∃β∨β↔∂'6K↔⊃↓ε3'3∃π;'31αβ∨↔QαβS#∃εs↔\4W3↔KON{9mβ&C∃β?f!β[↔↔≠'?9π;'31π≠SπeεK?Wv!β?;gIβ3?v9β↔;␈+∨!β6{IβπwK?;∀hSOS'faβK↔∞#';≥εKQβSzβ≠';O≠!84PRENAME          [OP=055]
--------------------------------------------------
        RENAME <channel number>,ADR
        <error return>

ADR:    <new file name or zero for deletion>
        <new file extension>,,<high-order date bits (0,,700000)>
        <new protection, mode, time and low-order date bits>
        <project-programmer name>


The   RENAME   UUO   is  used   to   change   the   name,  extension,
project-programmer  name,  protection  key, mode,  or  time  and date
written, or a combination of these, for a file, or to delete  a file.
This UUO MUST  be given AFTER a  successful LOOKUP or ENTER  has been
done on this channel and MAY be given after a CLOSE UUO  (see Section
2.12) for this channel.  However, if you do a CLOSE and  then someone
else either RENAMEs (successfully  or not) your CLOSEd file  or opens
it in Read-Alter mode, then you will no longer be permitted to RENAME
the file.  As with  LOOKUP and ENTER, if the  project-programmer name
is zero, your current Disk PPN is assumed.

If the file name specified is zero, and if the effective  PPN matches
the PPN of the  file open on this  channel, then that file  is marked
for deletion.  This means that as soon as no one is reading the file,
it will go away.  After  a file has been marked for  deletion, anyone
already reading it will be  able to continue reading it but  will not
be able to RENAME it, and anyone attempting to start reading  it will
not find it.

If  the   file  name   is  not  zero,   then  the   name,  extension,
project-programmer name and protection key for the file open  on this
channel are all  changed to those  specified in the  four-word block.
The protection key is in  bits 0:8 (777000,,0 bits) at  ADR+2.  Also,
if the mode, time and date fields (in bits 18:20 (0,,700000  bits) at
ADR+1 and bits  9:35 (777,,777777 bits) at  ADR+2) are not  all zero,
then the  mode and  time/date written of  the file  are set  to those
specified by  these bits: bits  9:12 (740,,0 bits)  of ADR+2  are the
mode field; bits 13:23 (37,,770000)  of ADR+2 are the time;  and bits
18:20 (0,,700000 bits) of ADR+1 are the high-order date bits and bits
24:35 (0,,7777 bits) of ADR+2 are the low-order date bits.  Note that
for dectapes, the mode and  the time written are not  saved; however,
if either of  the mode and time  fields is non-zero, then  the file's
date written will be set from the two-part date field, even if  it is
zero.  The protection-key field is ignored for dectapes.

If the RENAME  is successful, the  skip return is  taken.  Otherwise,
the no-skip error return is taken and (for the disk) an error code is
returned in the right half of ADR+1, with the rest of the  block left
unchanged.  If you  try to change  the name of  a file that  is write
protected against you,  or if you try  to change the protection  of a
file that is protection protected against you, then you will  get the
protection-failure return.  You cannot delete, or change the  name or
protection of,  a UFD except  that you can  change the  protection of
your own UFD.  The disk error codes for LOOKUP, ENTER and  RENAME are
explained  in a  table on  page 36.   Every LOOKUP,  ENTER  or RENAME
error leaves you  with no file open  on the offending  channel except
that after  a BAD  RETRIEVAL error of  code 11  you are  permitted to
RENAME the garbaged file.  No error codes are returned for dectapes.
                           Read-Alter Mode


There  are two  basic methods  of updating  data in  a file.   In the
first, the file is copied, with appropriate changes, into a  new file
with the same  name.  This is accomplished  by doing a LOOKUP  of the
old file on one channel and an independent ENTER of the same filename
on a different channel.  When the new version of the file  is closed,
the old version will be deleted (after all read references to  it are
finished).  This method requires the whole file, however, to  be read
in and written  out again even  if only a little  of the data  in the
file  is to  be changed.   The second  method allows  you to  open an
already existing disk file and to change data in it IN PLACE, without
rewriting the whole file.  This method of file manipulation  is known
as READ-ALTER (RA) mode.  When you have a file open in this mode, you
may do (on the same channel) both input and output with the file.  To
open a file  in this mode, you  do a LOOKUP of  the file and  then an
ENTER of the same file on  the same channel.  If both the  LOOKUP and
the ENTER are successful, then the  file will be open in RA  mode and
its time/date written will have been updated to the current  time and
date.  If you give a  different filename for the ENTER than  you used
with the LOOKUP,  the ENTER will  fail with an  error code of  6 (see
table below).   In RA mode,  at the moment  any data is  written out,
that data overwrites whatever was there before.  So if the  file does
not get closed thereafter, the new data will still have  replaced the
old data in the file.  Data  can be written into selected parts  of a
file by  use of the  random access UUOs  USETI, USETO and  UGETF (see
Section 2.14).  While  a file is open  in RA mode,  anyone attempting
to do either a LOOKUP or an ENTER of that file will get the FILE BUSY
error return (code 3, see below).  Also, an attempt to open a file in
RA mode (by doing an ENTER after a successful LOOKUP) will  also fail
with the FILE BUSY error return if anyone else is reading  or writing
the file.
            Disk Error Codes for LOOKUP, ENTER and RENAME


CODE          MEANING

  0     NO SUCH FILE.
        LOOKUP: File specified does not exist.
        ENTER:  Zero file name given.
        RENAME: File LOOKUPed or ENTERed has been deleted.

  1     ILLEGAL PPN.  PPN specified has no UFD.

  2     PROTECTION VIOLATION.  File is protected from what you
        tried to do.

  3     FILE BUSY.
        LOOKUP: File is currently open in Read-Alter mode.
        ENTER:  File is currently being written.
        ENTER after LOOKUP: File is currently being read or written.
        RENAME: File is currently being read.

  4     FILE ALREADY EXISTS.  (RENAME only)
        RENAME: There is already a file with the new name given.

  5     ILLEGAL LOOKUP/ENTER/RENAME SEQUENCE.
        LOOKUP: Channel was already open for output (ENTERed).
        RENAME: No successful LOOKUP or ENTER has been done yet,
                or someone else has a) RENAMEd your CLOSEd file
                or b) opened your CLOSEd file in Read-ALter mode.

  6     DIFFERENT FILENAME SPECIFIED.  (ENTER after LOOKUP only)
        ENTER after LOOKUP: The filename does not match that of a
                successful LOOKUP already done on this channel
                (attempt to open a file in Read-Alter mode).

  7     (This error code cannot occur.)

 10     BAD RETRIEVAL.  Some disk pointers have been garbaged
        somewhere.  This should not happen.

 11     BAD RETRIEVAL.  Slightly different version of error 10 above.

 12     DISK IS FULL.  (ENTER only)
        ENTER:  There is no more room on the disk.

Note:  Errors 10, 11 and 12  will cause a system error message  to be
typed  out  unless GARBIT  (bit  28--the  0,,200 bit)  is  on  in the
device's I/O  status word (see  Section 2.6).  If  GARBIT is  on, the
error return  will be taken  and the appropriate  error code  will be
returned.  If GARBIT is off,  an error message will be typed  out and
the program will be stopped.  For the DISK IS FULL case, if  you then
type CONTINUE, the  ENTER will take the  error return with  the error
code of  12.  You  cannot CONTINUE after  getting bad  retrieval with
GARBIT  off.   (You will  get  the error  message  "DISK TRANSMISSION
ERROR" instead of "BAD RETRIEVAL" if the bad retrieval  resulted from
an error by the disk itself.)
                       2.11  Transferring Data


The following UUOs are used to transfer data between your  core image
and  a  device, which  must  already have  been  initialized  on some
channel  (see Section  2.8).  If  you give  one of  these UUOs  for a
device open in buffered mode  with no buffer ring set up,  a two-ring
buffer will be set up for you before the normal action of the  UUO is
taken (see Section 2.9).
IN              [OP=056]
--------------------------------------------------
        IN <channel number>,ADR
        <success return>
        <error return>


The IN UUO causes some data to be read in to your core image from the
device open  on the given  channel.  In buffered  mode, at  least one
buffer will be filled with  input data and the buffer header  will be
updated so that the byte  pointer and byte count are correct  for the
newly filled buffer.  In dump mode, ADR is taken to be the address of
a dump  mode command  list (see Section  2.3), and  the UUO  will not
return until  all the  data indicated  by the  command list  has been
transferred.  In buffered mode, ADR is ignored.

If any  error (including  end of  file) occurs,  then the  UUO skips.
Specifically, when  the UUO is  to return, if  any of the  error bits
IOBKTL, IODTER, IODERR,  IOIMPM or IODEND  (see Section 2.6)  are on,
the skip return is taken.  Otherwise, the direct return (no  skip) is
taken.

In dump mode, if end of file occurs before the command list  has been
satisfied, then IODEND will come on and the UUO will skip,  but there
will be no way of telling  how much data, if any, was read  in before
end of file occurred.  In buffered mode, there is always a byte count
that tells how much data has been read in.

On teletypes and pseudo-teletypes, end of file is indicated by typing
control-Z  (↑Z);  on Data  Disc  and  III displays,  end  of  file is
indicated by typing CONTROL-META-linefeed.
INPUT           [OP=066]
--------------------------------------------------
        INPUT <channel number>,ADR


The INPUT UUO does exactly the  same thing as the IN UUO  except that
no error checking is done and the UUO never skips.
OUT             [OP=057]
--------------------------------------------------
        OUT <channel number>,ADR
        <success return>
        <error return>


The OUT UUO causes some data  to be written out from your  core image
to  the device  open on  the given  channel.  In  buffered  mode, the
buffer pointer, byte pointer and byte count in the buffer  header are
set  up for  the next  buffer that  you may  fill and  the  device is
started up to  empty the buffer you  just filled.  The first  OUT UUO
you give  in buffered mode,  however, does not  cause any data  to be
written out,  only the  buffer header to  be set  up with  the buffer
pointer, byte pointer and byte count for the first buffer for  you to
fill.

In dump mode ADR is taken as the address of a dump mode  command list
(see Section 2.3) that indicates what data are to be written out; the
UUO does not return until the transfer is complete.

In buffered  mode, if ADR  is non-zero, this  UUO does NOT  write out
your current buffer but instead  switches you to the new  buffer ring
pointed to by ADR.  (ADR should be the address of the second  word of
a buffer in the ring.)   Your buffer header and some  internal system
data are adjusted so that  you will next be filling the  first buffer
in  the new  ring.  The  buffer  ring you  are switching  to  must be
completely set up with  the buffer-to-buffer pointers and  the buffer
sizes in the second word of each buffer.  The purpose of this feature
is to  let you  switch among several  output buffer  rings if  you so
desire.   Note,  however, that  when  you switch  rings  there  is no
provision for  forcing data still  in buffers in  the old ring  to be
written out even though the buffers would be forced out by a CLOSE or
RELEAS UUO!

As with the IN UUO, if any of the error bits IOBKTL,  IODTER, IODERR,
IOIMPM or IODEND (see Section  2.6) are on at completion of  the UUO,
the UUO skips.  Otherwise, the direct return (no skip) is taken.
OUTPUT          [OP=067]
--------------------------------------------------
        OUTPUT <channel number>,ADR


The OUTPUT UUO does exactly the same thing as the OUT UUO except that
no error checking is done and the UUO never skips.
WAIT            [OP=047, ADR=10]  CALLI 10
--------------------------------------------------
        WAIT <channel number>,


The WAIT UUO simply waits for all I/O on the channel indicated by the
AC field  to finish.   Normally, when  a device  is open  in buffered
mode, the  system does I/O  with your buffers  while your  program is
running.  This means that only  the buffer pointed to by  your buffer
header can be expected to  be remain untouched by the  system.  After
giving this UUO, you can expect all of your buffers to be  stable and
untouched by the system.
                        2.12  Terminating I/O


The following two UUOs are used to finish up I/O on a  given channel.
The CLOSE UUO essentially undoes the effect of a LOOKUP or ENTER, and
the RELEAS UUO undoes the effect of an INIT or OPEN.
CLOSE           [OP=070]
--------------------------------------------------
        CLOSE <channel number>,<close-inhibit flags>

(<close-inhibit flags>:
        1 (bit 35) inhibits closing output,
        2 (bit 34) inhibits closing input.)


The CLOSE UUO  is used to terminate  I/O on the channel  specified by
the AC field  of the UUO.  The  effective address of  the instruction
determines whether input or output or both or neither is  closed.  If
the low order bit (bit 35--the 0,,1 bit) of the effective  address is
on, then the closing of output is inhibited.  If bit 34 (0,,2 bit) of
the effective address is on, the closing of input is  inhibited.  The
remaining bits in the effective address are ignored.

The sides (input or output) of the channel that are not to  be closed
(i.e., the sides whose close-inhibit bits are on) are  left untouched
by this UUO and can be closed later by another CLOSE UUO, by a RELEAS
UUO (see below) or by the EXIT UUO (see page 248).  To discard either
side of this  channel without closing it  (for example, to  discard a
new file currently ENTERed on this channel), use the RELEAS  UUO with
the corresponding close-inhibit bits on.

On  non-directory devices  like terminals  and paper  tape,  this UUO
forces out any data still in any output buffers.  For  magnetic tape,
closing output causes two end-of-file marks to be written on the tape
and causes the drive to  backspace over one of them; this  means that
there will be one end-of-file mark between each pair of files and two
end-of-file  marks  after  the  last  file  on  the  tape.   The  two
consecutive end-of-file marks denote  what is called the  logical (as
opposed to physical) end of tape.

On the disk and dectape, closing output forces out any data  still in
any output  buffers and  then closes the  file; closing  input simply
closes the  file.  After a  disk or dectape  file is closed,  no more
data  may be  transferred to  or  from it.   However, a  file  may be
RENAMEd even after it is CLOSEd, unless the file has been  deleted or
RENAMEd or opened in Read-Alter mode by someone else after the CLOSE.
RELEAS          [OP=071]
--------------------------------------------------
        RELEAS <channel number>,<close-inhibit flags>

(<close-inhibit flags>:
        1 (bit 35) inhibits closing output,
        2 (bit 34) inhibits closing input.)


The  RELEAS UUO  does a  CLOSE of  the given  channel with  the given
<close-inhibit  flags> specified  by the  effective address  (see the
CLOSE UUO  above) and  then frees the  channel number.   After giving
this UUO, you must do another INIT or OPEN to do any more I/O on this
channel.

To  discard  either side  of  this channel  without  closing  it (for
example, to discard a new file currently ENTERed on this channel), do
a RELEAS with the corresponding close-inhibit bits on.

The RESET UUO (see page 250) simulates a RELEAS <channel>,3 for every
channel  you have  open.  The  normal EXIT  UUO (that  is, "EXIT 0,")
simulates a RELEAS <channel>,0 for  every channel you have  open (see
page 248).
REASSI          [OP=047, ADR=21]  CALLI 21
--------------------------------------------------
        MOVE   AC,[<job number>]
        MOVE   AC+1,[<device name in sixbit, or channel number>]
        REASSI AC,


The REASSI UUO is used to turn over a device you are using to another
job.  Accumulator AC should contain the number of the job to whom you
wish  to give  the device,  and accumulator  AC+1 should  contain the
logical or physical name of the device or the channel on which  it is
open.  This  UUO gives  the same results  as the  following sequence:
1) you  release the  device with  BOTH input  and  output inhibiting,
2) you deassign  the device  with the  monitor DEASSIGN  command, and
3) the  job  indicated assigns  the  device with  the  monitor ASSIGN
command.

If the job number you give is not that of a logged in job,  then this
UUO will return  with accumulator AC set  to zero.  If the  device is
not assigned to your job, or  if the device may not be  reassigned at
this time, then the UUO will return with accumulator AC+1 set to zero
(which might be confusing if you specified channel zero in AC+1).
               2.13  Saving and Restoring I/O Channels


Because it  is sometimes useful  to be able  to reference  more files
than a job can have open on its =16 I/O channels, the  following UUOs
have been created to  allow a job to  save and then later  to restore
the state  of I/O on  one or  more channels.  A  channel is  saved by
pushing it onto a special  stack for your job called your  I/O stack,
which currently can hold at most 23 channels.  After an I/O channel's
state has been saved, that channel is completely free to be  used for
other I/O  without affecting  the device open  on the  saved channel.
The channel state that was  saved cannot be referenced by  the normal
I/O UUOS (such as LOOKUP,  IN, CLOSE, etc.); only the  following UUOs
plus EXIT  and RESET (which  affect all channels,  saved or  not) can
affect a  saved channel's state.   Note that the  UUOs below  are IOT
UUOs which means they cannot be given when the program is in IOT-USER
mode (which is explained in Appendix 1).
IOPUSH          [OP=724]
--------------------------------------------------
        IOPUSH <channel number>,<ID>
        <pdl-overflow return>


The IOPUSH UUO saves the state of the I/O channel specified by the AC
field by pushing it on  your I/O stack with the  identification given
by the address  field of this  UUO.  Thereafter, that  channel number
may be used without affecting the device open on the  channel pushed.
The identification <ID>  is saved with the  channel for use  with the
IOPOP and IOPDL  UUOs below.  If  there is no  more room on  your I/O
stack, the  channel is not  pushed and the  direct (error)  return is
taken.  If  the channel  is successfully pushed,  the skip  return is
taken.
IOPOP           [OP=725]
--------------------------------------------------
        IOPOP <channel number>,<ID>
        <no-such-saved-channel return>


The IOPOP  UUO restores the  saved state of  an I/O channel  that was
pushed onto your I/O stack.  The channel restored is the  closest one
to the top of the stack that was pushed with the identification <ID>.
If the <ID> is zero, then  the top channel in the stack  is restored.
If no saved channel  matching <ID> is found,  or if <ID> is  zero and
the stack is empty, then the direct (error) return is taken.   If the
channel to  be restored is  found, any device  currently open  on the
channel number  specified is  released (as  with RELEAS <channel>,0),
the saved  channel is restored,  its entry is  compressed out  of the
stack, and the skip return is taken.
IOPDL           [OP=726]
--------------------------------------------------
        IOPDL <function number>,<ID>


The IOPDL UUO is an extended UUO that uses the AC field  to determine
the  function  to be  performed  with your  I/O  stack.   The various
functions currently available and their associated numbers are listed
below.   Some  of these  functions  may take  skip  returns;  see the
individual writeups below.

    IOPDL 0,       This function  restores each channel  saved on
                   your I/O  stack to the  channel from  which it
                   was  pushed.  The  channels on  the  stack are
                   restored  in  order from  the  top  down.  Any
                   device  open on  a  channel to  which  a saved
                   channel is being restored is released  as with
                   RELEAS <channel>,0.

    IOPDL 1,       This     function     releases     (as    with
                   RELEAS <channel>,0)   all   of   the  channels
                   currently  saved  on  your  I/O   stack.   Any
                   channels that are not currently pushed  on the
                   stack are unaffected.

    IOPDL 2,<ID>   (Skips  on success.)   This releases  (as with
                   RELEAS <channel>,0) the channel closest to the
                   top   of   your  I/O   stack   that   has  the
                   identification  <ID>.  No  other  channels, on
                   the stack  or not, are  affected.  If  <ID> is
                   zero,  the  top   channel  in  the   stack  is
                   released.   The  released  channel's  entry is
                   compressed  out  of the  stack.   If  no saved
                   channel matching <ID> is found, or if  <ID> is
                   zero and the  stack is empty, then  the direct
                   (error)  return   is  taken.    Otherwise  the
                   channel found is released and the  skip return
                   is taken.
                    2.14  Random Access to Files


A disk  or dectape  file consists of  a series  of 200  word records.
Often,  these records  are read  (or written)  sequentially  from the
beginning of the file to  the end.  But sometimes one wishes  to read
or alter only selected parts of a file.  Three random access UUOs are
provided to allow the user  to do exactly that.  To do  random access
input or output, you must specify which record you want  to reference
next.  On the disk, the records of a file are  numbered consecutively
from 1 to n, where the  file is n records long.  (HIDDEN  records can
precede logical  record 1 of  a disk file.   The hidden  records have
non-positive logical record numbers.  See the disk file record offset
feature on page 279.)  On dectapes the records of a file are physical
blocks and  are numbered  differently; for  a precise  explanation of
dectape files, read Section 13.5.

For each disk file open, the system maintains a pointer to the record
that will be  referenced by the next  INPUT or OUTPUT UUO.   For each
dectape file open, the  system maintains two pointers, one  for input
and one for output.  The  following three UUOs set these  pointers to
specific values.   If you try  to set the  record pointer for  a disk
file to a value  less than that of  the first physical record  in the
file, you get the first  physical record instead.  If you try  to set
it to  a record  beyond the  end of a  disk file,  you get  the first
record after the  last record in the  file (and IODEND in  the device
I/O status word is turned on; see Section 2.6).  If you try to set it
to a value greater  than the number of  the last physical block  on a
dectape, IOBKTL will be turned on in the device I/O status word; thus
the error return will be taken with the next IN or OUT UUO.
USETI           [OP=074]
--------------------------------------------------
        USETI <channel number>,<record number>


The USETI UUO prepares you to read from a file at a  specific record.
You must have a file open  for input on the channel indicated  by the
AC field.  The record pointer  for the file (input block  pointer for
dectape  files) is  set to  the  value in  the address  field  of the
instruction and  the status of  any input buffers  is set  to unused.
The IODEND bit  in the device I/O  status word is cleared  unless you
have selected a record beyond the end of a disk file.

Note that the  record number in  a USETI for the  disk is taken  as a
signed  18-bit number  in  twos-complement notation;  see  the record
offset feature on page 279.
USETO           [OP=075]
--------------------------------------------------
        USETO <channel number>,<record number>


The USETO  UUO prepares  you for writing  into a  file at  a specific
record.   You  must  have  a file  open  for  output  on  the channel
indicated  by the  AC field.   This UUO  forces out  the data  in any
output  buffers that  have not  yet been  written and  then  sets the
record pointer for the file (output block pointer for  dectape files)
to the value in the address field of the instruction.  The  status of
any output buffers is set to unused.

Note that the  record number in  a USETO for the  disk is taken  as a
signed  18-bit number  in  twos-complement notation;  see  the record
offset feature on page 279.
UGETF           [OP=073]
--------------------------------------------------
        UGETF <channel number>,ADR


The  UGETF UUO  prepares you  to extend  the file  open on  the given
channel.  It forces out the data in any output buffers that  have not
yet been written.  Then, for  the disk, the record pointer is  set to
the number of the record after the last record of the file and IODEND
is turned on.  For dectapes,  the output block pointer is set  to the
number of the next free block you may write on.  In eip	!Kd@A
CgJX↓iQJ~)]k[E∃dA←L↓iQJAIKG←e⊂@Q←dAEY←
VRAg<AgKY∃GiKH↓SfAe∃ike]∃HAS\AiQJ↓o←eH4∃a←S9iKHAQ↑AErAiQJ↓KMMK
iSmJ↓CIIe∃gfA←_@AiQ∀A++≡8@A)Q∀AgiCQkf@A=LAC]d~∃S]AkhA←HA←kiAkhAEUMMKeLASfAMKhAi<Ak]kMKH\~(_@@@@@@@@@@@@@d\Dj@A∩=≡A'i¬ikfAQKgiS9NAC]⊂A'KiQS]N~(~∀~∃QQKeJ↓CeJAYCeS←UfAaS∃GKfA=LAS]→←e[CQS←\A=]JAG¬\AMS9HA←kPACE←UhAC\↓∩←≡~)IKmS
JA←d↓CE←kPABAY=OSGC0A∩←≡↓GQC]9KXXA9C[KYdtAiQ∀A∩←≡AIKm%GJAgQCikf4∃ESiL@@QKaaYCS9KHAS8@AIKQCSX@↓S\A'∃GiS←8@@d\XRXAi!J@AG!C]]K0@Akg∀AESiL~∀QKaaYCS9KHAE∃Y←nR0AiQJ↓IKmS
JAGQ¬eCGi∃eSgi%Gf@Q∃qaYC%]KH@↓EKY←\RXAi!J~∃a!sgSG¬XA]C5JA←L↓BAIKYSGJX↓C]HAQQJA]U[EKd↓←LAa∃←aYJ↓oCSi%]NAi<@Akg∀AB~∃≥SmK\↓IKmS
J\@AQQSfAMKGiS=\AIKMGeSE∃fAiQ∀A++∨LAkgK⊂Ai↑A≥KhAC9H←←d↓gKh~)iQKg∀\~∀→∂)M)&@@@@@@@A7∨@z`let~∀ZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZ~∀@@@@@A∂Q')&@qGQC]9KXA]U[EKdxYβ	$4∀~∀~))QJA≥)')LA++≡↓akifAiQJ↓∩←≡AMiCikLAo←e⊂@AM←HAiQJ↓IKmS
JA←a∃\@A←8AiQJ4∃S]I%GCiK⊂AGQC9]KXA%]i↑AQQJAo=eHAY=GCiK⊂AChA¬	$\@↓'KJAMKGiS=\@d\X\~∀→')M)&@@@@@@@A7∨@z`lat~∀ZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZ~∀@@@@@A'Q')&@qGQC]9KXA]U[EKdxXygi¬ikfA	Sif|4∀~∀~))QJAM)')LA++≡AoCSQfAM←HAiQJ↓IKmS
J@A←AK\A←8AiQSLAGQC9]KX@↓i↑AE∃G←[J4∃S]C
iSmJ↓C]HAQQK\AMKifAQQJAe%OQhA!CYLA=LAiQ∀A∩←≡↓giCiUfAo←IHAM←HAiQSL~∃IKYSGJA→e←ZAQQJAC⊃IeKgLAMSK1HA←L↓iQJAU+≡\@↓'KJAMKGiS=\@d\X\~∀→')βQ4@@@@@@@@A7∨@z`lgt~∀ZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZ~∀@@@@@A')¬)4@y
QC]]∃XA]k5EKd|0ygiCQkfAE%ifAi<AEJAQKgiK⊂|~∀@@@@@@yeKQke\A%LAC]dA←LAQQJAS9ISGCQKHAE%ifACIJA←\x~∀@@@@@@yeKiUe\AS_ACYX↓S]IS
CiKH↓ESif↓CeJA=ML|~(~∀~∃QQJA'Qβ)4AU+≡Ai∃gifA
KeiC%\AESQfAS\↓iQJAISOQh↓QCYL↓←LAi!JAgi¬ikfA]←eH~)M←dAQQJAI∃mSGJ↓←aK\↓←\@AQQJAS9ISGCQKHAG!C]]K0\@A)!JACI⊃eKgfAMSK1HA←L4∃iQJ↓++≡AMQ←kY⊂AG←]QCS\@DOfAS8AiQJ↓EShAA←gSi%←]fAQ↑AEJ↓iKgi∃H\@A%LACY0~∃←L↓iQJAQKgiK⊂AESiL@ACe∀A←MLQuKe<RXAi!K\@AQQSfAU+≡Ag-Saf\A∪L@↓C]rA=L~∃i!KZACIJA←\0AiQJ↓ISeK
hAeKQke\A%fAiC-K\\~(STATO           [OP=061]
--------------------------------------------------
        STATO <channel number>,<status bits to be tested>
        <return if all indicated bits are off>
        <return if any of the indicated bits are on>


The STATO UUO tests  bits in the right  half of the status  word just
like STATZ does but skips if  any of the tested bits are on  and does
not skip if all of them are off.
CHNSTS          [OP=716]
--------------------------------------------------
        CHNSTS <channel number>,ADR


The CHNSTS UUO puts the  use bits for the I/O channel  indicated into
the word located  at ADR.  Here  is a list  of the meanings  of these
bits.

    BITS   OCTAL         NAME      MEANINGS  OF  1'S  IN  CHANNEL
                                   USAGE WORD

    18     0,,400000     INITB     The    channel     has    been
                                   initialized with an INIT or an
                                   OPEN and a RELEAS has not been
                                   given yet.
    19     0,,200000     IBUFB     The   INIT   or   OPEN   which
                                   initialized    this    channel
                                   specified   an   input  buffer
                                   header address.
    20     0,,100000     OBUFB     The   INIT   or   OPEN   which
                                   initialized    this    channel
                                   specified  an   output  buffer
                                   header address.
    21     0,,40000      LOOKB     A  LOOKUP (successful  or not)
                                   has been done on this channel.
    22     0,,20000      ENTRB     An  ENTER (successful  or not)
                                   has been done on this channel.
    23     0,,10000      INPB      An  INPUT or  IN UUO  has been
                                   done on this channel.
    24     0,,4000       OUTPB     An OUTPUT or OUT UUO  has been
                                   done on this channel.
    25     0,,2000       ICLOSB    The  input  side  of  this I/O
                                   channel has been closed.
    26     0,,1000       OCLOSB    The  output side  of  this I/O
                                   channel has been closed.
    27     0,,400        INBFB     An input buffer ring  has been
                                   set up for this channel.
    28     0,,200        OUTBFB    An output buffer ring has been
                                   set up for this channel.
    29     0,,100        SYSDEV    The   device   open   on  this
                                   channel is SYS, which can only
                                   reference  files  on  the disk
                                   with PPNs of [1,3].
DEVCHR          [OP=047, ADR=4]  CALLI 4
--------------------------------------------------
        MOVE   AC,[<device name in sixbit, or channel number>]
        DEVCHR AC,


The DEVCHR UUO returns the device characteristics wor↓HAM=dAiQ∀AIKm%GJ~∃MaKGS→SKHA	rAiQ∀AG←]QK]if↓←L@A¬ε\@A¬εAgQ=kYHA
←]iC%\AKSQQKd@↓iQJA9C[J~(QY←O%GCXA=dAaQegSGC0RA←L↓iQJ@↓IKmS
JA←d↓iQJA9k[EKHA←LAQQJ@A
QC]]∃XA←\4∃oQS
PASh↓Sf@A=aK\\A)QJ↓GQCe¬GiKe%giSGLACeJAeKiUe]KH↓S\Ai!J@Aβ\@A∪_~∃iQ∀AIKm%GJAI=KfA]=hAKq%ghXA∧AuKe<ASfAIKike9KH\@↓⊃KeJ↓CeJAQQJA[∃C]S]≥f~∃←_AiQJ↓ESif↓S\Ai!JAeKQke]K⊂Ao←e⊂\~∀~(@@@A	∪)&@A∨π)¬_@@@@@@@↓≠β≥%≥∂&@@@A∨_@@@@bO&@@@A∪8@@@A⊃-∪π∀~∀@@@@@@@@@@@@@@@@@@@Aπ⊃¬%βπ)∃%∪')%π&A/=%λ~∀4∀@@@`@@@@@h`@```X0`@@@A	KGQCaJA]SiPA⊃SeKGQ←erA%\AG←IJ\~∀@@@b@@@@d```@`XX`@@@A⊃SgVA=dA]K\[gis1JA+	@\~∀@@@d@@@@@D````@XX`@@@A+MKd@@↓ISgV@AaC
V@@@!+	 R@@@Q=YHZ@A←d~(@@@@@@@@@@@@@@@@@@@@↓]Kn[MisYJ$\~∀@@@f@@@@@P````0X`@@@@A→%]JAaIS]iKH@Q→!PRA←d↓1∂ \A)QJA→!(↓C]H~(@@@@@@@@@@@@@@@@@@@@↓iQJAa∂ @A
C\AE∀AISgQS]Ok%gQKHAMe←4AKCG ~∀@@@@@@@@@@@@@@@@@@@A←i!KdAEd@AGQ∃GWS]≤AEShp@@Q1←]NA⊃SgaCQGP~∀@@@@@@@@@@@@@@@@@@@AQCEYJ$XAoQ%GPAo%YXAE∀A←\A→←dAi!JA1∂@AC]H4∀@@@@@@@@@@@@@@@@@@@A←ML↓M←dAQQJA→A(\~∀@@@h@@@@d```@XX`@@@@AQKe[S9CXAo!SGPA%fACiQCGQK⊂Ai↑A∧AU←D8~∀@@@j@@@@@b@```X0`@@@@A)KI[S]C0AoQS
PASf↓S\AkMJ\~∀@@@l@@@@h```0X`@@@@@AQ,AGC5KeB\4∀@@@n@@@@@d`@`XX`@@@@A)QJ↓∪≠ \4∀@@@p@@@@@b`@`XX`@@@@A→←]≤@AISMaCiG AiCE1J\@@↓)QSfA[KC9fAiQ¬h~∀@@@@@@@@@@@@@@@@@@@Ai!JAIKYSGJ@↓oSYX↓CGGKAhA++=f@A←QQKdAQQC\~(@@@@@@@@@@@@@@@@@@@@↓∪≥!+PAC]HA∨+)A+(XAMkGPA¬f@A≠Qβ!
X↓+')<~∀@@@@@@@@@@@@@@@@@@@AC]⊂A→∨∨-+ \~(@@@@d@@@@@h``0X`@@@@@@↓!CaKHAiCa∀@Aak9GPA←HAaY←QiKd@QoQS
PACe∀~∀@@@@@@@@@@@@@@@@@@@AY←≥SGCY1rAiQ∀AgC[∀AIKm%GJR\4∀@@@b`@@@@d`@XX`@@@@@A!Ca∃dAiCAJAeK¬IKd\4∀@@@bb@@@@b`@XX`@@@@@A	KGQCaJ\4∀@@@bd@@@@h`0X`@@@@@@A)QJ↓IKmS
JASf↓CmCS1CEYJ↓i↑Ai!J@AU=DAiQ¬h~∀@@@@@@@@@@@@@@@@@@@AO¬mJAi!JA	Yπ⊃$AU+≡\~(@@@@Df@@@@d`X0`@@@@@@@↓≠CO]∃iSFAQCaJ\4∀@@@bh@@@@b`0X`@@@@@@A)Ke5S]CX8~∀@@@bj@@@@h0X`@@@@@@@A	SIKGi←Ir@AI∃mSGJ8@@AβP@A'i¬]M←e⊂X@Ai!Sf~∀@@@@@@@@@@@@@@@@@@@A5KC]f↓iQJA⊃KmSG∀ASfA∧AIKGQCaJXAiQJ↓ISgV4∀@@@@@@@@@@@@@@@@@@@A←dA∧A+	 8~∀@@@bl@@@@d0X`@@@@@@@A∪]AkhAI∃mSGJ8~∀@@@bn@@@@b0X`@@@@@@@A∨kQakhA⊃KmSG∀\~∀@@@bp@@@@@XXh`@```@@@A'=[J@A)←DAQ¬f@Ai!JAIKYSGJ@↓β''∪≥≥KH\A∪L~(@@@@@@@@@@@@@@@@@@@@↓iQJA¬eOk[∃]hAi<AiQJ↓	-π!$AoCL@@O	M⊗NA←H~∀@@@@@@@@@@@@@@@@@@@@O∪5 NXAQQK\AQQSfA	ShAo%YXAE∀A←ML8~∀@@@br@@@@`0Xd``@``@@@A'←5J@AU=D@AQ¬f@Ai!J@AI∃mSGJ@A∪≥%)KH@↓←d~∀@@@@@@@@@@@@@@@@@@@A=!≥K⊂\@A∪_@AiQ∀ACeOU[K]h↓i↑@AQQJA	∃-π⊃$4∀@@@@@@@@@@@@@@@@@@@AoCfO	'⊗≤A←d@O∪≠ ≤XAiQ∃\AiQ%f@AE%hAoS1X~∀@@@@@@@@@@@@@@@@@@@AE∀A←ML8~∀@@@d`tLj@@`0Xbnn\nn@@@AαA=]JAS8AESh↓≤A[K¬]fA[=IJ@zLj[≤A%fAYK≥CX~∀@@@@@@@@@@@@@@@@@@@A→←dAi!SfAI∃mSGJ8~∀DEVUSE          [OP=047, ADR=400051]  CALLI 400051
--------------------------------------------------
        MOVE   AC,[<device name in sixbit, or channel number>]
        DEVUSE AC,


The DEVUSE UUO can be used to  find out what job, if any, is  using a
device and how many jobs are waiting for that device.  The  AC should
contain the name (logical or  physical) of the device or  the channel
number on which it  is open.  If there is  no such device, a  zero is
returned in AC.  Otherwise, the following information is  returned in
AC:

    BITS   OCTAL         VALUE

    0      400000,,0     One if some job has the  device ASSIGNed
                         (zero for 'DSK' or 'IMP').
    1      200000,,0     One if some job has the device INITed or
                         OPENed (zero for 'DSK' or 'IMP').
    2      100000,,0     One if the device is a TTY attached to a
                         job.
    3      40000,,0      One  if the  device is  a  UDP currently
                         ASSIGNed by your job.
    4      20000,,0      One  if the  device is  a  UDP currently
                         INITed or OPENed by your job.
    5      10000,,0      One  if the  device is  a  UDP currently
                         ASSIGNed by some other job.
    6      4000,,0       One  if the  device is  a  UDP currently
                         INITed or OPENed by some other job.
    7      2000,,0       One  if the  device is  a  UDP currently
                         ASSIGNed as PRIVATE or OLD by any job.
    12:17  77,,0         Number of  the job  the device  is being
                         used by,  or zero if  it is not  in use.
                         If the device has been detached from the
                         system,  then  this  field  will contain
                         zero but bit 0 (ASSIGNed device) will be
                         on unless the  device is a UDP.   If the
                         device  is  a  UDP  detached   from  the
                         system,  then this  field will  be zero,
                         bits 0:6 will be off, and bit 7 (PRIVATE
                         or OLD) will be on.  If the device  is a
                         UDP being  used as the  swapping device,
                         then this field will be zero and  bits 0
                         (ASSIGNed), 1  (INITed), 5  (ASSIGNed by
                         someone  else),  6  (INITed  by  someone
                         else) and 7 (PRIVATE or OLD) will all be
                         on.  If the device is a UDP  assigned as
                         PUBLIC,  then this  field will  be zero,
                         bit 0 will be on, and bit 7  (PRIVATE or
                         OLD) will be off.
    18:35  0,,777777     The number  of jobs (not  including you)
                         in the queue waiting for the device.
PNAME           [OP=047, ADR=400007]  CALLI 400007
--------------------------------------------------
        MOVE  AC,[<device name in sixbit, or channel number>]
        PNAME AC,
        <error return for no such device>


The PNAME UUO  returns the physical name  of the device  specified by
the contents  of the AC.   AC should contain  either the  device name
(logical  or physical)  or the  number of  the channel  on  which the
device is currently open.  If  the device exists, the skip  return is
taken and the device's physical name is returned in AC.  If  there is
no such  device, the  direct (error) return  is taken  and the  AC is
unchanged.
DEVNUM          [OP=047, ADR=400104]  CALLI 400104
--------------------------------------------------
        MOVE   AC,[<device name in sixbit, or channel number>]
        DEVNUM AC,
        <error return for no such device>


The DEVNUM UUO is  used to find out  the unit number of  a particular
device.  AC should contain either the logical or physical name of the
device or the number of the channel on which the device is  open.  If
there is a device with the  name given or open on the  channel given,
then its unit number is returned in AC and the skip return  is taken.
If there is no such device, the direct (error) return is taken.

The  unit number  of a  device specifies  which of  several logically
identical  devices  a specific  device  is.  For  instance,  the unit
number of TTY41 is 41, the unit number of MTA1 is 1, etc.
TTYIOS          [OP=047, ADR=400014]  CALLI 400014
--------------------------------------------------
        MOVE   AC,[<job number or sixbit device name>]
        TTYIOS AC,


The TTYIOS UUO returns the I/O status word of the device indicated by
the contents of the AC.  If AC contains a logical or  physical device
name, that device's  I/O status word is  returned.  If AC  contains a
job number,  then the I/O  status word of  the terminal  belonging to
that job is returned; if that  job has more than one TTY,  then there
is no telling which one's I/O status word will be returned.   The I/O
status word is returned in the AC; if there is no such device,  -1 is
returned.  The meanings  of some bits in  the device I/O  status word
are explained in  Section 2.6.  Other  bits for specific  devices are
explained in the device writeups in Section 13.
                    SECTION 3--TTY INPUT/OUTPUT


The terminal is one of  the most important I/O devices for  the user.
He  controls his  programs  by typing  in various  commands,  and the
programs type back certain things to keep him informed.  This section
explains several UUOs that are provided to make terminal  I/O control
flexible but simple.  The word TTY  is used in this manual to  mean a
user   terminal   of   any  type,   whether   display,   teletype  or
pseudo-teletype.
                  3.1  TTY Echoing and LF Insertion


The system provides two services to terminals doing input.  The first
is that characters typed in are normally sent back to the terminal in
order for the user to see what he has typed.  This is  called echoing
of input.  The  second action taken on  input is that  normally, when
the system receives a carriage  return from a TTY line, it  inserts a
linefeed after the carriage return.   Thus the user does not  have to
type a linefeed (hereafter abbreviated LF) after each carriage return
(hereafter abbreviated CR).  The LF is put into the  terminal's input
buffer just as if the user had typed it; it is also usually echoed to
the terminal.

These actions  can be  modified by  the user  to suit  his particular
purposes.  Echoing can be  turned off in two different  manners.  The
first  of these  is  intended for  terminals that  always  print each
character typed.  If the system were to echo characters to  this kind
of  terminal,  each character  would  appear twice.   This  method of
turning echoing off  causes all echoing  to be suppressed  except for
echoing of  LFs inserted after  CRs.  Bit 15  (4,,0 bit) in  the line
characteristics word (see  the GETLIN UUO  on page 77)  indicates the
state of  this type  of echo suppression.   This bit  can be  set and
cleared  by  the  monitor   commands  TTY  NO  ECHO  and   TTY  ECHO,
respectively.

The  second  type of  echo  suppression  is designed  to  be  used by
programs that, for whatever reasons, do not want  typed-in characters
to appear on the terminal.  This method turns off all  echoing except
when TTY input  is going to the  monitor rather than to  the program.
(The TTY is  said to be  in MONITOR MODE when  input is going  to the
monitor; monitor mode is indicated by bit 9 (the 400,,0 bit) being on
in  the TTY's  I/O status  word.)   The state  of this  type  of echo
suppression is indicated by  the NOECHO bit (bit 28--the  0,,200 bit)
in the TTY I/O status  word (see Section 2.6 and Section  2.15); when
the NOECHO bit is on, echoing is suppressed.  This bit can  be turned
on or off only by UUO, currently only by the CTLV UUO (see  page 94),
by the PTJOBX UUO (with the DOFF and DON functions--see page 114) and
by the INIT and SETSTS UUOs.  PTJOBX is the recommended UUO  for this
purpose.   A  RESET (see  page  250) clears  this  bit,  thus turning
echoing back on.  (A program can also disable just the echoing of the
CONTROL and META bits; see the NOECHB bit in Section 13.2.)

Insertion of  linefeeds after carriage  returns is affected  by three
factors: 1) whether TTY  input is going to  the monitor or to  a user
program, 2) whether  the terminal is  a pseudo-teletype  (see Section
3.5),  a display  or a  teletype, and  3) the value  of bit  16 (2,,0
bit) in the TTY line characteristics word (see the GETLIN UUO on page
77).   LFs  are  always  inserted after  CRs  on  III  and  Data Disc
displays.  For other TTYs in the normal case, LFs ARE  inserted after
CRs.   They  are  NOT  inserted  if  both  1) bit  16  in   the  line
characteristics  word  is  on   and  2) either  the  terminal   is  a
pseudo-teletype  or input  is  going to  a user  program.   Note that
pseudo-teletypes (PTYs) are initialized with bit 16 on; thus  LFs are
normally  NOT   inserted  after   CRs  on  PTYs.    Bit  16   in  the
characteristics word can  be changed only  by UUO, currently  only by
the SETLIN UUO (see page 78) and the PTSETL UUO (see page 112).
              3.2  Codes Returned for Characters Typed


NOTE:  In this manual, the  word "CONTROL" (all capitals) is  used to
represent the display keyboard key, as in "CONTROL-META-linefeed on a
display."  Old  style control  characters (which  cannot be  typed on
displays,  but only  on teletypes)  are described  by using  the word
"control" (lower case),  as in "control-Z  on a teletype."   The word
"control-C" is used to mean both "control-C on a teletype"  and "CALL
on  a  display  keyboard∩."  Actually,  CALL  sends  two control-C's;
CONTROL-CALL, META-CALL, and CONTROL-META-CALL send one.

When a character  is read from a  TTY, the 7-bit Stanford  ascii code
for that character is returned  in bits 29:35 (0,,177 bits)  (see the
Stanford ascii character set in Appendix 6); in  addition, characters
read  from  displays are  returned  with the  CONTROL  and  META keys
represented  as  bits  28  (0,,200--CONTROL)  and  27 (0,,400--META).
Characters typed  on teletypes  with the  old-style control  key held
down are normally returned with a code of 100 less than the character
typed; for example,  control-M returns a code  of 015 ("M" is  115 in
ascii).  However, when control-Z is  typed on a teletype and  read by
any of the UUOs described below, the value returned is 612,  which is
the  code   for  CONTROL-META-linefeed   from  displays.    Thus  the
end-of-file character always appears  as the same code  regardless of
the  type  of  terminal  on  which  it  was  typed.   Note  that when
characters are being read from a TTY by means of the INPUT or IN UUOs
described in Section 2, only  7 bits are returned for  each character
(the  CONTROL  and META  keys  on  displays are  lost),  and  the EOF
characters  (control-Z and  CONTROL-META-linefeed) do  not  appear as
characters at all--they merely set the EOF bit in the TTY  I/O status
word.
                             3.3  TTYUUO


The  most important  UUO  is probably  TTYUUO (known  some  places as
TTCALL).   This is  an extended  UUO with  many  different functions.
With a  couple of  exceptions, which are  noted, these  functions all
operate on the terminal attached to the job giving this UUO.
TTYUUO          [OP=051]
--------------------------------------------------
        TTYUUO <function number>,ADR


TTYUUO uses the accumulator field of the instruction to determine the
particular  function  to be  executed.   Each of  these  functions is
described separately below.
INCHRW          [OP=051, AC=0]  TTYUUO 0,
--------------------------------------------------
        INCHRW ADR


The INCHRW UUO waits for a character to be typed and then returns the
character right-justified in the word at ADR.
OUTCHR          [OP=051, AC=1]  TTYUUO 1,
--------------------------------------------------
        OUTCHR ADR

ADR:    <ascii character>


The OUTCHR UUO  types out the  single ascii character  represented by
the right-most seven bits of the word at ADR.
INCHRS          [OP=051, AC=2]  TTYUUO 2,
--------------------------------------------------
        INCHRS ADR
        <return if no character has been typed>
        <success return>


The INCHRS UUO looks to see if a character has been typed.   Then, if
so, the character is returned in the word at ADR and the  skip return
is taken.  If no character has been typed, the direct return is taken
and the word at ADR is not changed.
OUTSTR          [OP=051, AC=3]  TTYUUO 3,
--------------------------------------------------
        OUTSTR ADR

ADR:    <asciz string>


The OUTSTR  UUO types out  the ASCIZ string  that starts  at location
ADR.  (An ASCIZ string is terminated by the first null (zero) byte.)
INCHWL          [OP=051, AC=4]  TTYUUO 4,
--------------------------------------------------
        INCHWL ADR


The INCHWL UUO waits until an entire line (ended by  carriage return,
linefeed, altmode  or a  character typed  with CONTROL  or META  on a
display)  has  been  typed  and  then  returns  a   single  character
right-justified in ADR.  This is called LINE MODE and should  be used
instead  of  CHARACTER MODE  (as  in INCHRW)  whenever  possible.  In
character mode you  cannot always backspace over  mistyped characters
because your program may already have eaten them up; in line mode you
can backup as far as the last activation character.
INCHSL          [OP=051, AC=5]  TTYUUO 5,
--------------------------------------------------
        INCHSL ADR
        <return if no entire line has been typed yet>
        <success return>


The INCHSL UUO looks to see if an entire line has been typed,  and if
so, returns one character  right-justified in ADR and takes  the skip
return.  If an entire line has not yet been typed, the  direct return
is taken and ADR is not changed.
GETLIN          [OP=051, AC=6]  TTYUUO 6,
--------------------------------------------------
        GETLIN ADR


The  GETLIN UUO  can  be used  to find  out  what terminal  a  job is
attached  to,  if  any,  and what  the  characteristics  are  for any
terminal.  If the original contents  of ADR are less than  zero, then
the characteristics for  your own terminal  are returned in  ADR.  If
ADR originally contains  the number of a  TTY line (a  number between
zero and the maximum  legal TTY line number), the  characteristics of
that  terminal are  returned in  ADR.  If  ADR originally  contains a
number greater than the maximum  legal TTY line number, then  zero is
returned in ADR.

If a job requests the line characteristics for its own  terminal, and
if that job is detached, that is, not attached to any  terminal, then
a -1 (all bits on) will be returned as the line characteristics.  You
should check for this condition before testing any of  the particular
bits or you will be deceived by a detached job.

If the characteristics word is  not -1, then the right  half contains
the  line number  of  the terminal  and  the left  half  contains the
characteristics of the terminal, as explained below.

NOTE:  If  the  terminal  is  a  pseudo-teletype  (see  Section  3.5)
controlled   directly   or    indirectly   (through   a    chain   of
pseudo-teletypes) by a Data Disc  or III display, then the  Data Disc
bit (bit 4--the  20000,,0 bit) or the  III bit (bit  0--the 400000,,0
bit) will be on in the characteristics for the pseudo-teletype.

    BITS   OCTAL         NAME      MEANINGS  OF 1'S  IN  TTY LINE
                                   CHARACTERISTICS WORD

    0      400000,,0     DISLIN    The terminal is a III display.

    1      200000,,0     CTYLIN    The  terminal  is  the  PDP-10
                                   console teletype (CTY).

    2      100000,,0     TTYFIL    Carriage returns are made into
                                   multiple  carriage  returns in
                                   order  to  allow  the teletype
                                   carriage  to  reach  the  left
                                   margin    before    the   next
                                   character      reaches     the
                                   teletype.  This bit can be set
                                   and  cleared with  the monitor
                                   commands      TTY FILL     and
                                   TTY NO FILL, respectively, and
                                   with  the  SETLIN  and  PTSETL
                                   UUOs (see below and page 112).
                                   Data Disc and III displays are
                                   not affected by this bit.

    3      40000,,0      LERSEE    A  PTLOAD UUO  will  cause all
                                   characters   typed  (including
                                   line  editor  commands) during
                                   re-editing of  the line  to be
                                   placed  into  the   TTY  input
                                   buffer followed by a character
                                   code of 400 and  then followed
                                   by    characters    from   the
                                   re-edited   line.    See   the
                                   PTLOAD UUO on page  113.  This
                                   bit  can  be  set  and cleared
                                   with  the  SETLIN  and  PTSETL
                                   UUOs  and  is  cleared   by  a
                                   RESET.

    4      20000,,0      DDDLIN    The  terminal is  a  Data Disc
                                   display.

    5      10000,,0      ECHARR    Characters  with codes  001 to
                                   006, 010, and 016 to  037 will
                                   be  echoed  and  output  as an
                                   up-arrow  (↑) followed  by the
                                   character  represented  by the
                                   code with  the 100  bit turned
                                   on.   E.g., character  code 32
                                   will be  echoed as "↑Z"  (Z is
                                   code  132).  This  bit  can be
                                   set   and  cleared   with  the
                                   monitor commands TTY ARROW and
                                   TTY NO ARROW,    respectively,
                                   and with the SETLIN and PTSETL
                                   UUOs.   This bit  is initially
                                   on  for  TTYs  0  through  11.
                                   Data Disc and III displays are
                                   not affected by this bit.

    6      4000,,0       PTYLIN    The     terminal      is     a
                                   pseudo-teletype  (see  Section
                                   3.5).

    7      2000,,0       IMLIN     The terminal is an IMLAC.

    8      1000,,0       IMPBIT    The     terminal      is     a
                                   pseudo-teletype     and     is
                                   controlled by a  job connected
                                   to  the IMP.   This  means the
                                   PTY's job is being run through
                                   the  ARPA  network.   This bit
                                   can be set with the SETLIN and
                                   PTSETL UUOs, but once  set, it
                                   cannot be cleared.

    9      400,,0        PTYWAK    Pseudo-teletype   input   wait
                                   will  be  terminated   by  TTY
                                   input also if this bit  is set
                                   in     the      TTY's     line
                                   characteristics word  (see the
                                   PTRD1W UUO on page 105).  This
                                   bit  can  be  set  and cleared
                                   with  the  SETLIN  and  PTSETL
                                   UUOs.

    10     200,,0        PTYUSE    This line is  a PTY in  use by
                                   some  job.  This  bit prevents
                                   the   PTY's  DDB   from  being
                                   killed after a monitor command
                                   is carried out if there  is no
                                   job logged in on this line.

    11     100,,0        SPCBRK    The  terminal  is  in  special
                                   activation  mode.   This means
                                   that line  mode input  will be
                                   activated  by  the  characters
                                   whose  bits  are  1's  in  the
                                   special    activation   table.
                                   This  bit   can  be   set  and
                                   cleared  with  the  SETLIN and
                                   PTSETL  UUOs.   A  RESET  (see
                                   page 250) clears this  bit, as
                                   well as resetting your special
                                   activation   table    to   the
                                   standard   special  activation
                                   table.  See the SETACT  UUO on
                                   page 84.

    12     40,,0         ROBTPD    The last character typed was a
                                   rubout,  and a  backslash will
                                   be typed out when  a character
                                   that is not a rubout is typed.

    13     20,,0         FCS       The     terminal     is     in
                                   full-character-set mode.  When
                                   this  bit is  off,  lower case
                                   letters    are   automatically
                                   changed  to upper  case.  This
                                   bit  can  be  set  and cleared
                                   with   the   monitor  commands
                                   TTY FULL    and   TTY NO FULL,
                                   respectively,  and   with  the
                                   SETLIN  and  PTSETL  UUOs.  On
                                   displays this  bit can  be set
                                   by  [ESC]  F  and  cleared  by
                                   [BRK] F.

    14     10,,0         TBXPND    The terminal is assumed not to
                                   have   a    hardware   tabbing
                                   mechanism.   When this  bit is
                                   on,  tabs  get  converted into
                                   the   appropriate   number  of
                                   spaces.    This  bit   can  be
                                   cleared and set by the monitor
                                   commands      TTY TAB      and
                                   TTY NO TAB,  respectively, and
                                   with  the  SETLIN  and  PTSETL
                                   UUOs.    Data  Disc   and  III
                                   displays and  non-network PTYs
                                   are not affected by this bit.

    15     4,,0          FULTWX    Echoing of input characters is
                                   inhibited except for linefeeds
                                   inserted  by the  system after
                                   carriage     returns.     This
                                   inhibition     is     provided
                                   primarily   to   avoid  double
                                   echoing   on   terminals  that
                                   always  print  each  character
                                   typed.  See Section 3.1.  This
                                   bit can be set and  cleared by
                                   the monitor  commands TTY ECHO
                                   and TTY NO ECHO, respectively,
                                   and with the SETLIN and PTSETL
                                   UUOs.    Data  Disc   and  III
                                   displays  are not  affected by
                                   this bit.

    16     2,,0          XON       Linefeeds will not be inserted
                                   after carriage returns, except
                                   in  monitor  mode.   This  bit
                                   always    determines   whether
                                   linefeeds  are to  be inserted
                                   after  carriage  returns  on a
                                   pseudo-teletype         (PTY),
                                   regardless of whether  the PTY
                                   is   in  monitor   mode.   See
                                   Section 3.1.  On Data Disc and
                                   III  displays,  this  bit does
                                   not inhibit insertion  of LFs;
                                   it merely inhibits  echoing of
                                   inserted LFs.  This bit can be
                                   set   and  cleared   with  the
                                   SETLIN  and  PTSETL  UUOs.   A
                                   RESET  (see  page  250) clears
                                   this bit except on PTYs.

    17     1,,0          TLKRNG    This line  is in a  talk ring.
                                   The number of the next  TTY in
                                   the ring will be found in bits
                                   11:17  (177,,0  bits)  of this
                                   line's  TTYTAB entry  (see the
                                   explanation of  TTYTAB entries
                                   on page 365).
SETLIN          [OP=051, AC=7]  TTYUUO 7,
--------------------------------------------------
        SETLIN ADR

ADR:    <line characteristics bits which you want on>


The SETLIN UUO sets the line characteristics for the TTY  attached to
your job  from the word  at ADR.  In  the line  characteristics word,
only bits 2, 3, 5, 8, 9,  11, 13, 14, 15 and 16 (151536,,0  bits) can
be changed by the user.   Bit 8 (1000,,0 bit--IMPBIT) can be  set but
cannot be cleared.  Other bits in the word at ADR+1 are ignored.  See
the GETLIN UUO above for the meanings of the various bits in the line
characteristics word.
RESCAN          [OP=051, AC=10]  TTYUUO 10,
--------------------------------------------------
        RESCAN ADR              ; ADR is ignored if it is zero

ADR:    <word for returned character count>


The RESCAN UUO attempts to  back up your TTY input buffer  pointer to
the beginning  of the  previous monitor command  typed in.   By using
this UUO, a program started  up by a monitor command can  re-read the
command line that  started it.  In fact,  this UUO can be  given over
and over  to read  the command line  several times.   If this  UUO is
given  with  a  non-zero  effective  address,  then  the   number  of
characters over  which the pointer  is backed up  is returned  in the
word pointed to by the effective address.

WARNING: If  more than a  buffer full of  characters have  been typed
since the beginning of the last monitor command, then  the characters
you get  after giving  this UUO will  NOT be  from the  command.  The
pointer into the buffer will simply have been set to the value it had
at the  beginning of the  command; the command  itself may  have been
overwritten by other text typed  in more recently, in which  case you
will be reading garbage after giving this UUO.
CLRBFI          [OP=051, AC=11]  TTYUUO 11,
--------------------------------------------------
        CLRBFI


The CLRBFI UUO clears your TTY input buffer.  This is used  mainly to
throw away any characters the user has typed ahead when a fatal error
occurs.
CLRBFO          [OP=051, AC=12]  TTYUUO 12,
--------------------------------------------------
        CLRBFO


The CLRBFO UUO clears your TTY output buffer.
INSKIP          [OP=051, AC=13]  TTYUUO 13,
--------------------------------------------------
        INSKIP  <flag>
        <return if no characters have been typed>
        <success return>


The INSKIP  UUO tells you  if the user  has typed anything  which you
have not yet read.  If the low order bit of the address  field <flag>
is  on, then  this UUO  checks for  a whole  line having  been typed;
otherwise it checks for anything having been typed.  If something has
been typed, then this UUO skips; if not, the direct return is taken.
INWAIT          [OP=051, AC=14]  TTYUUO 14,
--------------------------------------------------
        INWAIT ADR


The INWAIT UUO just waits until a full line has been typed  in.  Then
if the address ADR is non-zero, the number of characters in  the last
line re-edited (III and  Data Disc terminals only) with  a CONTROL-CR
or with a PTLOAD UUO (see  page 113) is returned in the word  at ADR.
In other words, if you give  a PTLOAD UUO and then do an  INWAIT ADR,
you  will  get  in  location ADR  the  number  of  characters  in the
re-edited line.  If you are not at a III or Data Disc display,  or if
you did not re-edit a line somehow, the number placed in ADR  will be
meaningless.  See  also the PTLOAD  UUO on page  113 for  the special
effects of an INWAIT following a PTLOAD when bit 3 (the 40000,,0 bit)
is on in the line characteristics word.
SETACT          [OP=051, AC=15]  TTYUUO 15,
--------------------------------------------------
        SETACT [OLD,,NEW]

OLD:    <4 word block to receive the current activation table>

NEW:    <4 word block to provide a new activation table>


The SETACT UUO is used to retrieve and/or change the activation table
used in  special activation  mode and some  special bits  which apply
whether or not the TTY is in special activation mode.   An activation
table consists of 4 words, with one bit for each of the =128 possible
7-bit characters.  The first three words plus the =20 high-order bits
of the fourth word (total of =128 bits) specify which  characters are
activation characters when the TTY is in special activation mode (bit
0 of first word represents ascii 0, bit 1 represents ascii  1, etc.).
The activation  characters are defined  to be those  characters whose
bits are 1 in the activation table.  Some of the  remaining low-order
bits of the fourth word have special meanings which are  given below.
Note  that  these  bits  are  in  effect  regardless  of   the  TTY's
special-activation-mode status.

    BITS   OCTAL         NAME      MEANING  OF  1'S  AT   END  OF
                                   FOURTH WORD

    35     0,,1          SUPBTS    Suppress     activation     on
                                   characters with CONTROL and/or
                                   META  bits  except  for  those
                                   characters that would activate
                                   without either of  these bits.
                                   See also bit 33 below.

    34     0,,2          SUPCCR    Disable
                                   CONTROL-carriage-return   from
                                   giving  back  the   last  line
                                   typed.   This  bit  is ignored
                                   when  the  TTY  is  in monitor
                                   mode.

    33     0,,4          SUPSCM    Always activate  on characters
                                   that  have  both  CONTROL  and
                                   META on, regardless of setting
                                   of bit 35 above.

This UUO  takes the  current activation  table (including  extra bits
listed above) and places  it in the four  words at OLD, then  sets up
the new activation table (including extra bits listed above) from the
four  words  at NEW.   If  either address  OLD  or NEW  is  zero, the
corresponding function of this UUO is omitted.  Thus if OLD  is zero,
the old  activation table is  not returned, and  if NEW is  zero, the
(old) activation table is not changed.

Your special activation  table is initialized  by the system  so that
all characters except letters  and digits cause activation  (when you
are in special  activation mode).  The  precise value of  the initial
special activation table (including  extra bits at the end)  is shown
below.

        777777,,777777          ;Activate on octal 0:43
        777700,,037600          ;Activate on octal 44:57 or 72:100
        000000,,374000          ;Activate on octal 133:140
        000007,,600000          ;Activate on octal 173:177

Your special  activation table  (incluing extra bits  at the  end) is
also restored to the above values by a RESET UUO (see page 250).
TTREAD          [OP=051, AC=16]  TTYUUO 16,
--------------------------------------------------
        TTREAD ADR

ADR:    <line number--data returned here>


The TTREAD UUO  allows you to read  the microswitch keyboard  bits of
any display's  keyboard.  The effective  address in  this instruction
specifies a location which should contain the TTY line number  of the
keyboard you wish to read.  If the line number specified  is illegal,
then  your line  number is  used.  Then  if the  line is  not  on the
keyboard scanner  (that is, if  the line  is not a  III or  Data Disc
display line), then this UUO is a no-op.

The keyboard bits  are returned in the  right half of ADR.   The line
number minus  20 is  returned in the  left half  of ADR.   The tables
below  give the  correspondence between  the keys  depressed  and the
returned data.

    BITS   OCTAL         DESCRIPTION

    0:11   777700,,0     These  bits are  unused and  returned as
                         zero.
    12:17  77,,0         The  TTY  line number  minus  20 appears
                         here.
    18:21  0,,740000     These  bits are  unused and  returned as
                         zero.
    22,26:29             0,,21700  These bits  are on  when there
                         are   no  keys   depressed.    They  are
                         explained individually below.
    22     0,,20000      This is the SPW bit and should always be
                         on in returned value.
    23     0,,10000      This is the  STR bit and is  on whenever
                         exactly one character key  is depressed.
                         All the  keys are character  keys except
                         META,  CONTROL,  TOP,  SHIFT,  and SHIFT
                         LOCK.
    24:25  0,,6000       These bits are unused but may be on.
    26     0,,1000       This  bit  is turned  off  by depressing
                         META.
    27     0,,400        This  bit  is turned  off  by depressing
                         CONTROL.
    28     0,,200        This  bit  is turned  off  by depressing
                         TOP.
    29     0,,100        This  bit  is turned  off  by depressing
                         SHIFT or SHIFT LOCK.
    30:35  0,,77         These bits  hold the value  that results
                         from ORing together the codes for all of
                         the  character  key(s)  being depressed.
                         See the table below  for correspondences
                         between keys and their 6-bit codes.  The
                         notation  "---" means  no  key generates
                         the indicated code.

                           MICROSWITCH KEYBOARD CHARACTER CODES

                               0   1   2   3   4   5   6   7  

                           00  --- a   b   c   d   e   f   g  
                           10  h   i   j   k   l   m   n   o  
                           20  p   q   r   s   t   u   v   w  
                           30  x   y   z   CR  \   LF  --- ---
                           40  SPC BRK ESC CAL CLR TAB FF  VT 
                           50  (   )   *   +   ,   -   .   /  
                           60  0   1   2   3   4   5   6   7  
                           70  8   9   :   ;   BS  ALT --- ---
OUTFIV          [OP=051, AC=17]  TTYUUO 17,
--------------------------------------------------
        OUTFIV  ADR

ADR:    <five-character ASCII string>


The OUTFIV UUO  is designed for  sending special commands  to IMLACs.
The  effective   address  should  point   to  a  word   containing  a
five-character ASCII string.  Characters from the string are  sent to
the terminal  until either a  null byte is  encountered or  the fifth
character in  the string has  been sent.  If  the low order  bit (bit
35--the 0,,1 bit) of  the ASCII word is  on, a 177 character  will be
appended to the front of the string sent to the terminal.

The  special  feature  of  this  UUO  is  that  it  insures  that the
characters (including the 177)  will be sent to the  terminal without
any intervening  characters.  This prevents  commands sent  to IMLACs
from getting mixed up with normal typeout.
                     3.4  Miscellaneous TTY UUOs
TTYMES          [OP=047, ADR=400047]  CALLI 400047
--------------------------------------------------
        MOVEI  AC,ADR
        TTYMES AC,
        <error return>

ADR:    <number or physical name of destination tty>
        <byte pointer for message but with byte count in bits 6:17>

MESS:   ASCII   /...message.../


The  TTYMES UUO  can  be used  to type  out  an ASCII  string  on any
terminal.  Unlike the OUTSTR UUO, TTYMES allows the message  to start
in any byte of a word.  The end of the message is indicated by a null
(zero) byte or by exhaustion of an explicit character count.

Upon call, AC  should contain the address  of a two-word  block.  The
first word of this block should contain either the name  (physical or
logical) of  the destination terminal  (e.g., SIXBIT /TTY21/)  or the
number of the  destination terminal (e.g.,  21).  The second  word of
the block should contain a byte pointer for the ASCII  message except
that bits 6:17 (7777,,0) should contain either zero or a  byte count.
The first character of the message  is found by doing an ILDB  on the
byte pointer, so the position field (bits 0:5--770000,,0 bits) of the
byte pointer should indicate  the byte before the first  character in
the  message.  If  the position  field of  the byte  pointer contains
zero, then 44 is assumed for this field so that the first byte of the
message will  be the  high-order byte  of the  word addressed  by the
right half of the byte pointer word.

Characters are  sent to  the destination  until either  the character
count runs out or a  null (zero) byte is encountered in  the message.
If the count  field contains zero, then  characters are sent  until a
null byte in encountered.  Thus,  if you don't wish to  calculate the
length of your message, you can  use a zero count and a null  byte at
the end of the message (i.e., use an ASCIZ string).

If you are outputting a  message to your own terminal, this  UUO will
wait until it  has sent the message  successfully and then  will take
the skip  (success) return.  If  the word at  ADR does not  specify a
legal TTY, or if  not all of the message  can be sent right  now (for
instance, if the TTY's output is being held), then the direct (error)
return will be  taken.  If all of  the message is  successfully sent,
then  the skip  (success) return  is taken.   Note that  if  this UUO
fails, there is no indication of how much, if any, of the message was
actually sent.  See the NULMES  UUO below for the ability  to recover
from such failures.

(The TTYMES UUO  and the NULMES UUO  work by putting  characters from
the string  into the output  buffer of the  destination TTY.   If the
output buffer fills up, the UUO waits a little and tries to continue.
If the  output buffer  is still full  after a  certain time,  the UUO
gives up and takes the error return.)
NULMES          [OP=047, ADR=400114]  CALLI 400114
--------------------------------------------------
        MOVEI  AC,ADR
        NULMES AC,
        <error return>

ADR:    <number or physical name of destination tty>
        <byte pointer for message but with byte count in bits 6:17>

MESS:   ASCII   /...message.../


The NULMES UUO, like the TTYMES  UUO above, allows a job to  type out
an ASCII string on any terminal.  However, unlike the TTYMES UUO, the
NULMES UUO does  not interpret a null  (zero) byte in the  message as
terminating the  message, and  upon failure the  NULMES UUO  gives an
indication of what happened or how much of the message got sent.

Upon call, AC should contain  the address of a two-word  block, which
is interpreted just as in the TTYMES UUO above except that  the count
field (bits 6:17--7777,,0 bits) in the word at ADR+1 must be non-zero
and always specifies the number of bytes in the ASCII  message.  Null
bytes  do  not  terminate  the  message--they  are  ignored  although
included in the byte count.

If the word at ADR does not specify a legal TTY, or if no DDB  can be
gotten for the TTY indicated, the direct (error) return will be taken
and AC will  contain zero.  If  the TTY is legal  but not all  of the
message could be sent, then  the direct (error) return will  be taken
and AC will contain the number of characters in the message that were
not sent.   Thus the  user can recover  from a  temporary jam  in the
destination TTY's output buffer.  If the message is successfully sent
in its entirety, then the skip (success) return is taken.
SNEAKW          [OP=047, ADR=400063]  CALLI 400063
--------------------------------------------------
        SNEAKW AC,
SNEAKS          [OP=047, ADR=400064]  CALLI 400064
--------------------------------------------------
        SNEAKS AC,
        <return if no char is waiting for you>
        <success return>


The SNEAKW and  SNEAKS UUOs look to  see if any characters  have been
typed that have not yet been read.  If there is such a  character, it
is  returned in  the AC.   SNEAKW always  returns a  character, after
waiting  until there  is one  if necessary.   SNEAKS never  waits; if
there is a character present,  it is returned and the skip  return is
taken.  Otherwise, SNEAKS does not change the AC and takes the direct
return.

Note that SNEAKW does not wait for a whole line to be typed, only one
character.   Also,  neither  of  these  UUOs  actually  reads   in  a
character.
ACTCHR          [OP=047, ADR=400105]  CALLI 400105
--------------------------------------------------
        ACTCHR AC,


The ACTCHR UUO (III and Data Disc displays only) waits for a  line to
be  typed and  then returns  in AC  the character  (including CONTROL
and/or META bits typed) that activated the last line re-edited with a
CONTROL-CR or with a PTLOAD UUO (see page 113).

If you  are not on  a III or  Data Disc display,  this UUO  returns 0
without waiting for a line to be typed.
TTYSKP          [OP=047, ADR=400116]  CALLI 400116
--------------------------------------------------
        TTYSKP <channel>,
        <no-TTY-input-ready return>


The TTYSKP UUO can be used to find out if there is TTY input ready to
be read  from a  particular I/O channel.   The AC  field of  this UUO
specifies the channel  whose input you wish  to test.  If  the device
open on that channel  is a TTY, and if  an INPUT UUO given  now would
return  immediately, then  this UUO  takes the  skip return.   If the
device open on this channel  is not a TTY, or  if it is a TTY  but an
INPUT would not return immediately, then the direct return  is taken.
If there is no device open on the specified channel, then the program
will  be  stopped with  the  system error  message  "IO TO UNASSIGNED
CHANNEL."
TTYJOB          [OP=047, ADR=400113]  CALLI 400113
--------------------------------------------------
        MOVE   AC,[<TTY line number> or -<PTY line number>]
        TTYJOB AC,


The TTYJOB UUO is  used to find out the  number of the job  owning or
controlling a particular TTY.  If AC contains a legal TTY number, the
job number of that TTY's owner  is returned in AC, with the  sign bit
on if the TTY is not the owner job's attached terminal (that  is, the
sign bit is on  if the TTY belongs to  that job only because  the job
has the TTY  assigned or INITed).  If  AC contains the negative  of a
legal PTY number, then the number of that PTY's controlling  job will
be returned in AC.  If AC contains an illegal argument, then  zero is
returned in AC.
CTLV            [OP=047, ADR=400001]  CALLI 400001
--------------------------------------------------
        CTLV


The CTLV UUO inverts the state of program-controllable echoing of TTY
input by the system.  Normally every character you type is  sent back
to your  terminal by the  system so  that you can  see what  you have
typed.   If you  give  this UUO  when  echoing is  turned  on (normal
state), echoing will cease; and if you give this UUO when  echoing is
turned off, echoing will resume.   The state of this type  of echoing
is determined by the value the NOECHO bit (bit 28--the 0,,200 bit) in
the TTY I/O status word; this bit is inverted by the CTLV  UUO.  When
the terminal  is in  monitor mode,  the NOECHO  bit is  ignored.  See
Section 3.1.

A better way to control this  type of echoing is to use the  DOFF and
DON functions of the PTJOBX UUO (see page 114).  Those  functions set
the  state  of  this  type of  echoing  explicitly  rather  than just
inverting it as CTLV does.
GETLN           [OP=047, ADR=34]  CALLI 34
--------------------------------------------------
        GETLN AC,


The GETLN UUO is used to  find out the physical name of  the terminal
attached to your  job.  The name (in  sixbit) is returned in  AC.  If
the job is detached, zero is returned.
                        3.5  Pseudo-Teletypes


The pseudo-teletype  (PTY) is  a special  system concept  designed to
allow users to have control of more than one job at a time.  A PTY is
like a physical terminal in  almost all respects.  However, a  PTY is
controlled by the job which  created it, and no other job  can access
it.  To TYPE CHARACTERS ON A PTY, the controlling job  does character
output to the PTY;  and to SEE THE CHARACTERS  TYPED OUT ON A  PTY, a
job does character  input from the  PTY.  If you  send a new  PTY the
character "L" followed by a carriage return and linefeed, a  job will
begin logging in  on the PTY.  You  can run programs  and communicate
with the  monitor through a  PTY just as  you can through  a physical
terminal, but PTYs are controlled by program rather than by keyboard.
Thus, a  single job  (attached to  a terminal  or even  detached) can
control one  or more  PTYs and hence  one or  more other  jobs, which
themselves can control other PTYs.

Just as each physical terminal has a unique line number, so does each
PTY.  Currently the line numbers assigned to PTYs begin with  121 and
go  upward.  The  PTYs have  physical device  names, just  like other
terminals; for example, the physical  name of the PTY on line  121 is
SIXBIT /TTY121/.  There is a  maximum number of PTYs that  the system
can support at any one time and this maximum is currently 24.

PTYs have line  characteristics just as  other terminals do  (see the
GETLIN UUO on page 77).   When a PTY is initialized (with  the PTYGET
UUO), it is set up with  the following bits (4222,,0 bits) on  in the
characteristics     word:     6--PTYLIN,      10--PTYUSE,     13--FCS
(full-character-set mode),  and 16--XON  (linefeeds are  not inserted
after carriage returns).   You can of  course change certain  bits in
the characteristics word to suit your purposes.  This can be done for
a PTY with the PTSETL UUO (see page 112) just as SETLIN (see page 78)
does it for other terminals.

When you output characters to a PTY, those characters will  be echoed
by the  monitor as usual  and will thus  appear in  subsequent inputs
that you do from the PTY.  You can turn off the automatic  echoing by
the usual means for doing so with terminals; namely, you can  turn on
bit 15 in the  PTY's line characteristics, (this inhibits  echoing so
that only linefeeds inserted  after carriage returns get  echoed), or
you can have the  job that is running on  the PTY do a CTLV  UUO (see
page 94),  which eliminates all  echoing except while  the PTY  is in
monitor mode.  You can get the  same effect as doing a CTLV  (to turn
echoing off) but more easily by using the PTJOBX UUO with the control
function  DOFF.   This will  always  turn echoing  off,  whereas CTLV
inverts the state  of echoing, turning  it off when  it is on  and on
when it is off.  The control  function DON for PTJOBX can be  used to
turn echoing back on.  The PTJOBX UUO is explained on page 114.
                               PTYUUO


The UUO that  is used to communicate  with PTYs is PTYUUO,  which has
many different functions that it can perform, including  reading from
and writing on a PTY.
PTYUUO          [OP=711]
--------------------------------------------------
        PTYUUO <function number>,ADR

ADR:    <PTY's line number>
        <other data depending on the function>


PTYUUO is an extended UUO  that uses the AC field to  determine which
of many possible pseudo-teletype  functions is to be  executed.  Each
of these functions  (which are described  in detail below)  expects a
two  word  block  to  be  pointed to  by  the  address  field  of the
instruction.  The right half of  the first word of this  block should
contain the line number of  the pseudo-teletype for which the  UUO is
intended (except  with PTYGET which  returns this line  number).  The
second word is a data word that is used or returned by the UUO.
                        Doing PTYUUOs to TTYs


It is sometimes useful for a  program to be able to type  things into
its own TTY input  buffer just as if  the user had typed  them.  This
can be done with  PTYUUO by specifying a  PTY line number of  zero in
the  word  at ADR.   When  this word  is  zero, the  PTY  function is
executed with  your attacked TTY.   Thus, if you  do output to  a PTY
with a line number of zero, the characters will go to your terminal's
input buffer (into your line editor if you are on a III or  Data Disc
display) just as if you had typed them.

If bit 18 (the 0,,400000 bit) of the word at ADR is on for  a PTYUUO,
the number in the remaining bits of the right half is  interpreted as
the line number of a TTY and the PTY function is carried out for that
TTY.  However,  if you  do not  own the  TTY, you  must have  the MES
privilege to do anything with it.

Any  attempt  to do  input  (PTRD1S,  PTRD1W or  PTRDS  UUOs)  from a
physical  terminal's  output  buffer with  either  of  the  above two
methods will not work; you will get the system error  message ILLEGAL
UUO and your program will be stopped.



Now here are the individual PTYUUO functions.
PTYGET          [OP=711, AC=0]  PTYUUO 0,
--------------------------------------------------
        PTYGET ADR
        <return if no PTYs available>
        <success return>

ADR:    <PTY's line number and characteristics are returned here>


The  PTYGET  UUO  gets  you a  pseudo-teletype  and  places  its line
characteristics word (see the GETLIN UUO on page 77) in  the location
pointed to by the  effective address of the instruction  (i.e., ADR).
This means that the PTY's  line number will appear in the  right half
of ADR and its characteristics will appear in the left half.

If a PTY is available, this UUO skips and the PTY is assigned to you.
If there are none available,  the direct return is taken and  you get
no PTY.
PTYREL          [OP=711, AC=1]  PTYUUO 1,
--------------------------------------------------
        PTYREL ADR

ADR:    <line number of PTY to be released>


The PTYREL UUO releases  the pseudo-teletype whose line number  is in
the right half of  ADR.  The job running  on that PTY is  killed, and
any PTYs it may have acquired are released.

The RESET UUO (see page 250) releases all pseudo-teletypes you own.
PTIFRE          [OP=711, AC=2]  PTYUUO 2,
--------------------------------------------------
        PTIFRE ADR

ADR:    <PTY's line number>
        <count of free bytes is returned here>


The PTIFRE UUO returns to you in ADR+1 the number of free  bytes left
in the input buffer of the PTY whose line number is in ADR.   This is
the number of  characters you may send  to that PTY before  its input
buffer is full.  If you use  a PTY output UUO that waits, and  if you
send more that this many characters, you will have to wait  until the
program running on the PTY  reads some characters and makes  room for
your output.
PTOCNT          [OP=711, AC=3]  PTYUUO 3,
--,αZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4∀@@@@@@AA)∨π≥PAβ	$4∀~∃β⊃$t@@@y!)dOfAY%]JA]U[EKdx~∀@@@@@@yG←k9hA←L↓GQCe¬GiKeLAS\AA)2O`~β?WSπ+Qβ.3≠↔IεKMβK/#WK;.!β#↔⊗)x4(hP4*SF)↓αB$z∞:Q¬*V=↓π∪↔SW⊗sMβ'r↓αε∩∩YEβSF)↓β;.k↔Iε{→↓β≡CπKπ∨#↔KMαβ'9β&C∀4+␈+SCW"βW≠6+Iβ?2βS#∃¬αReβ>C?O∃εc';∃εsW7/⊃β'MεK9αε%⊃84(2BR∀!FM↓α↓↓↓↓α↓↓αn⎇↓u]E
aαε
k"u↓α¬"fVVz↓Q04Ri555ji555ji555ji555ji555ji555ji555ji555ji555ji555hh)↓↓α↓↓↓↓¬αRJ⊃
→αε∩⊂h)↓↓α↓↓↓↓βcK↔S/∪9β'2β;=β≡CπKπ∨#↔IβO→βCK/≠↔;Qph)↓↓α↓↓↓↓βcOW∂≡+OMβ⊗+SWKsp4(4T
∩Iiα↓↓↓r¬"e∨Mεc';∃εsW7/⊃x4)α↓↓↓↓α↓↓s?v)↓]7⊗KQβ∂FKπ∂&+Iβ'~βK↔S/∪;↔⊃εC↔K∃ph(4(hRS#∃¬αRJ⊃
→αVVzβ3??←→βS=π≠↔∃βN1βS#/∪∃βπ⊗)βπ;Jβ∂#π⊗∂S↔↔→β'9π##∃β␈+SCW h+W63↔Iβ}1βS#*↓αBRJβ←#?≡)β3'v)↓β;.k↔IεKMβ'r↓αε∩∩q↓α'2βS#↔⊗)↓βπ⊗)1β?v(4)]n∪'Qβ≡CπKπ∨#↔IβO→βK↔∞!β≠K}iβS#/∪∃βπv!βK↔'+K;↔"β'9α"I-Eε;⊃β&C∃βO↑K@4+⊗+SWKrβ'M↓π#π/↔rq↓α'2↓βS#/∪∃βπ⊗)↓β;zβ∂#π⊗∂S↔↔→↓β'rβS#∃ααBRe?→β?W'βWP4V∪W≠≠/⊃1βSF+9↓β
βk↔Kzβ'M↓π∪↔SW⊗s↔⊃βNqαε∩∩YE↓β∞s⊃βSF)β∪'⊗+∂Q↓π∪↔SW⊗qβ'LhSSπ/.q84(2BR∀!F]↓α↓↓↓↓α↓↓αn⎇↓u]E
aαε
k*u↓α¬"fVVz↓U04Ri555ji555ji555ji555ji555ji555ji555ji555ji555ji555hh)↓↓α↓↓↓↓¬αRJ⊃
9αε∩⊂h(4*"Ii↓α↓↓rB%I∨MβfK;∃βw+7↔∪p4)↓α↓↓↓↓α↓s?;*↓]7O!β∂#∂∪π∂S/⊃β'Mπ∪↔SW⊗s↔⊃βF+K∃xhP4(4U##∃α¬"J⊃F:αVV=αβK↔π'→β?;*↓]7O!β∂#∂∪π∂S/⊃↓β≠⊗{5βSF)β?W'βWQ↓ε∪W≠≠/⊃β?_hSS#∃¬αRe↓π;#?O*β3';*↓β;Wn∪↔IβO→β'9ααε∩Iε;⊃↓π∪↔SW⊗sMβSF)↓β∂FKπ∂&+Iβ'ph*ε∩∩YE9↓∧K→βSF+K∃β∂∪∃β;z↓β∂#∂∪π∂S/∪Mβ'rβS#∃¬αRe∨~β?WSπ+Q↓β↔+≠≠↔∩aβS#O_4*V,yβ←πO#Mβ≠␈⊃βS#*↓αBRJβS=β&yβO?n)↓β?/#CWQε;⊃β&C↔9β⊗+SWKw→↓βSF)β≠'↔≠P4+≡CπKπ∨#↔I8hP4*'2↓βS#*↓αBRM:ε-↓ε∪'Q↓αC'Qα↓e57&C∃↓Qβ↓11Aαβ'QJ↓β'Mαβ?9↓εK9↓β&C∃β3Ns∀4+≡CπKπ∨#↔K'∨#'∂Mπ;?K⊃ε3?I↓πK?WIπ#↔K7Nsπ1↓G≠↔∃↓π##∃α<*R2&rαVV=αβ?9βε∨∀4S9]%1αβS#↔rβS#'~↓β';∨#KW∂&K?9β>K31↓π∪↔SW⊗qβ←#.q↓β¬ε≠#πK∞≠S↔Iαβ'Mβ'KC↔⊂hS↔'SF+Iβ?rβS#∃¬αReβ␈⊃β?9πK?WIπ#↔K7Nsπ19αα'→β&C∃β≠O∪OQ↓ε≠#πK∞≠S↔Iπ#gC↔ h+'Mαβ≠K?j↓βS#*βS↔KnK;π1b↓β¬↓πS↔K=π;'31αβ∃↓π∪↔SW⊗s↔⊃βNq↓αε%⊃-E↓ε;⊃βvx4+∂FKπ∂&+KMβ>K31βF[∃β⊗+↔9β⊗+π⊃↓ε3K?5ε+'S#/⊃βS#*βS↔KnK;π1ε{I↓β&C∃αB%I84*NqβS#O→β7πvs↔I1πK?Uβneβ←∞KQβ≠␈⊃β↔'&C↔Iα¬"eβ?∩αRReεK;CW"p4(2BR=⊃FM↓α↓↓↓↓α↓↓αn⎇↓u]E
aαε
k2u↓α¬"fVVz↓Y04Ri555ji555ji555ji555ji555ji555ji555ji555ji555ji555hh)↓↓α↓↓↓↓¬αR↑I
→αε∩⊂h)↓↓α↓↓↓↓βcK↔S/∪9β'2β∂#π⊗∂S↔∩β;?Qπ≠↔;Qph)↓↓α↓↓↓↓βcOW∂≡+OMβ⊗+SWKsp4(4T
∩Iiα↓↓↓r¬"e∨Mεc';∃εsW7/⊃x4)α↓↓↓↓α↓↓qen∪'Qβ≡CπKπ∨#↔Iβ&yβ∃π≠↔;Qph(4(hRS#∃¬αR↑I
→αVVzβO↔;'→βS#*↓e7O!β∂#∂∪π∂S/⊃βK'>CQ7+/≠S'≠N+⊃β'r↓αε∩∩YEβSxh+S#*αBReπ;#?O*β3';*β;W7⊗+Iβ'~↓β'9∧
∩I9αα'→β&C∃β∂FKπ∂&+Iβ∂∞q↓β*βO↔;"`4+SF)βO/O↓βK↔'+K9βO→βSπ↑+99↓∧K→βSF)αBRJ;Mβ'wβWQβ↔+≠≠↔∩β'Mβ∞cK↔π'Iβ≠Wfa04+&C∃↓β≡CπKπ∨#↔IβO→↓β;␈!↓βO.sQβπv!↓βSF)↓β∪O∪↔∂Qπ∪↔SW⊗q↓β'~↓βSπ↑+99↓¬##∀4T~>:R∀z1βπv!α6⊗$	β/↔O→β←#N≠!β∪O≠C3πJβ3';/→β#π6)βπK*βK↔C⊗+O↔;&+⊃βJβ'PhQIa↓C↓11Iβ↓56∞|rRJ>bIβπ;"β'Qβ⊃]↓!αa1QAαi66⊗$	%β'rαε∩I[	84(hRS#∃¬Z⊗N∞
α⊗u1ααn
J,
.uβ∞s⊃αn≤b⊗εJj↓β∂#∂∪π∂S/∪M↓#∂→βπ[∞K3πf)↓β?rα∪πSλh*∪'≡→βπ;"α&&%αβ∪'Oεcπeβ↑+g?∂∪∪M%ε≠π9β⊗)↓βO.sQβ←O#!βSFKMαV,y↓↓#␈⊃β←'&@4+SF)αBR=⊃F]α-*=β.c?]%αβeβF[';:αε∩I[	β∂?w#π'9β↓11Eβ↓QI↓ε3?Iα\*N∞ε∧*t4+␈⊃↓A1c	AAQ
↓β≠?∩αn
J,
.uβ␈⊃↓↓AbaEAA#!β≠?∩αn∞2,
Ju9α↓απ3≡y1β'2↓β'"↓IL4RAA11↓AAAε∪'Q%εKMβ?rβ'9α"I-EbβS#↔rβS#∃ε≠#πK∞≠S↔Iπ∪↔CK/≠↔;S.!↓β↓∀π&FQQ&f␈t
w⊗&↑$αβ:-↔'~∧¬εN2
mw"αεF∩bβF$αε␈$εC"J∧∞vNfD&*α∞<Vw"∞MrαπMR¬¬K⊃PWπ,\6.&\Dαε↔∀∞FF*∧4-≤8~∧-j∧6F∂,≤7&/'4ε∞vD∧εN2∧&␈&∧&O'4∧β∪~∧⊗v"ε&@hRε¬BcFεβαε-≡G~J≡&*α
⎇bbπMVrπMRε≡≡&∞∨L↑"αε≥dπ&FT
F␈:
}&&/$∧β:ε-≡G_h.⎇⊗fb,Rπ≡]nBππ,\6.&\Dε↔J∧∞FF*8%∀,→;Rε≡≡&∞∨L↑"rα	≥bε.≡Mε/∩∧
v2πMW≡(Q.G>z∧6∂≡↑5BεNd∧π&FT∧ε≡F≡,⊗∨&↑$εNr∧∞FF*
Mw:α
}&&/$∧β:ε-≡G~α
≡2αεm}Bε∞aQ%\-88∃∧-T
w∩¬8*$,;Tε↑/≤-v∂⊗D6}n\≥f"ε≥lBεO4
f␈"]↔&F↑$β#
DεC∩α
}"β#EAPW&]bπ&
≡2¬-Ytε⊗.=⎇V/~∀εvz]}αbπL≥6Nvt∞FF*∞=6Oα∞,W'/-ebα∧≥N6zb∧
⊗2πMPhU
K∩π∨\6N6≤\BεO4
f␈"∀ε&O>
F∂JD∞FF.d
vvg∀∞FF*
Mw:ε},F/∩εtαε⊗≡N2αF-≡G_h&'∪S≠UUW&FTεαbc⊗vrαε-≡G~J
|bα∧_J"[
≡&*π↑<V#Z∧
fz¬8Z4≤
λ[Rαε}$¬\∃(X∀]hQ,6}n\≥f'~<⊗rα,Rπ≡]nBε6}$απ&]LW'O↑2rα¬	⊗nf≤>2ε≡≥dαπ≡]lBβB∧&O'74π&FQQ#αbF&βαα-↔"ε⎇dαε∞d∧∧NnL≤2εn\≥g~α∞Mε∂"∧∞FFO46F∂,≤7&/$∧π≡F}]F"α
mw"ε,QPV≡\6↑.D⊗>∞≥n7"πMRπ∨\6N∞D⊗∨&≡l↔&N⎇dπ&∞-LRε/l]bεNd∞FF*	≥Vf∞4∧εO~
≥`hW>V≡N≥Dε∞∨M≡f∂&≥⎇bεn|LRrHQ e¬Jz#
:∧∧ααα∧∧αα¬9zβk;⊗∃B∧7Vujα

EM-Ytβ:`Q%RjjUURjjUURjjUURjjUURjjUURjjUURjjUURjjUURjjUURj`++#!$λλλ∧∧λλ∀
JtL5dλ1∀C!!"P1
'Hλλ∧π∀∃⊗$}h≠~-l(≠]-\Y<OAQHλλ∧∧λλλπG+8Z.D_z_.,8⎇→.$be sent>


The PTWR1W UTβ≡AMK]I`~βS#∃βI7'"β∂#π⊗∂S↔∩βK'∨G!7+W∨#'≠'.!β'9ααε∩I[	βPεqQ'&FT
¬%J∞⎇ε␈≡T
FNvT∧εw.\,W∩ε≡4εNrλ_E∩r∧∧∧N2∞Mε*¬
K∩?~
≥gπ/D∧ε↔.llW∩ε≡1PV∞N,V∞'∀g.fEDπ&F≡4¬-,t∞v∞ON4απ.nM⊗bπMW⊗*
≡2π⊗⎇⎇Rε∞lDπ&F]dαπ≡]lG~πMPhV=↔⊗∞>LW∩pQ!PU&
≡2¬-YtεNwL↑'π⊗↑N2π&Tε≡F≡,⊗∨&↑$εNrλ_E∩[∀WF∞>MGJε≡4π&FT∧¬¬%z&∃~¬ZYphVM|W~r∧∧¬≡.T∞FF*∧
¬%=&~2α¬ZYrε∞-}f*αmw∩α∞Mε*εL↑F∞NN4αε}d∧π≡.lM⊗v:∞Mε(h+8U≤≤~λUjb8%∀,→;Rε∞lD¬\≤HX∃∃j=ε∂⊗≤>F/↔4∞Fzε∀FO∨
L↔J?4
⊗wπ↑Dε↔.llW∩pQ e¬J(E~α∧∧ααα∧∧αα¬9zβk;⊗∃B∧7V∪¬j∧
¬%MZYrβ¬APRjUURjjUURjjUURjjUURjjUURjjUURjjUURjjUURjjUURjjUURhh$∧ααα∧∧ᬬJ(E~∧_J hPQ(∀%∪$∧ααβJ
EJ?4
FNvT
g.n,↑#ph$∧ααα∧∧αβf≤LG⊗/>4ε␈∩/↔&*∞∞G∩πMtβ≠α↑⎇w⊗"-F}≡4f␈∩∞,W'/-lV"π>N&NvwaPPh!Q%&FT
¬%∀J4¬-,t∞&.∞N4ε∞fD∞FF*=ε∂⊗≤>F/↔4∞FF∂D↔⊗*
≥bπ&Tαε␈↑Nπ/".V66↑!PV}d∞FF*

EJπ⎇
w≡*
M⊗v*∧
g.n,↑"εO4
⊗r∧_J"ε∞lDπ⊗/N↑&w~∧∞FF/<Tε≡F≡,⊗∨&↑.0hV≡4ε∞rλ~4≤M$∞7'⊗≥lrε∂D∞FF*
Mv≡∂M≥vrε≥lFN≡≡↓→,D_↑(λ_∀Jl%D≥z→.,(l∧∞{|Y∞1"\z
};→λ,(_;
Mxx=\Hλ∧	9H_M≡≤h
G&-h
εvmmk¬Fλλ_M≡≤j(
≥H⊂1
%l(λ≡Y(≠M}β"X-Mλ≡Y.-kλ≥
(≥{n,λ_=∧λ1∀Jf∀~<h∞L:y;D<h_$↑=→$∞≠z;NL<H≥
t_Y(∧∞<y9∧∞7FE≤eturn the ASCIZ string, with the byte pointer incremented before the
first character is deposited.  (Before the byte pointer is  used, the
size  field is  set up  for 7-bit  bytes and  the index  and indirect
fields  are cleared.)   If bits  6:17 of  ADR+1 are  zero,  the ASCIZ
string is returned  such that the first  byte is in the  high-order 7
bitpε↓←LAi!JAY←
CiS←8Aa←S9iKHAQ↑AEr↓iQJAISOQh↓QCYL↓←LAβ⊃$Vb\4∀→!)/I&n@@@@@@@A7∨@znbb0AβεzDc:@AA)3++<@bbX4∀ZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4Z~∀@@@@@A!)/I&nAβ⊃$~∀~)β	$t@@@yA)2Of↓YS]J↓]k[E∃d|~∀@@@@@@yC⊃IeKgLA←dA	siJAA←S]i∃dAM←HAgie%]NAi<AEJAMK]h|4∀~∀~))QJAA)/%&\A++≡↓iCWKLAiQJ↓β'π∪hAgie%]NAgAKGSM%KHAEdAβ	$,bAC]⊂AgK]⊃fASh4∃i↑AQQJA!Q2AoQ=gJAY%]JA]U[EKd↓SfAS8Aβ	$8@A)Q%fA++<AoCSQf@ACLA]KG∃ggCed~∃k]QSXAi!JAoQ=YJAgQeS]N↓QCfA	KK\AMK]h\A∪LA	Sif@Xtbn@ nnnn0X`AE%ifRA=L~∃β⊃$VbA¬eJA]=hACY0AuKe<XAiQ∃\@Aβ⊃$VbA%fAiC-K\ACLABAEeiJAa=S]iKH@Ai↑↓EJ~∃UgKHAQ↑ACG
KgfAQQJ@AMieS]≤XAoSQPAiQ∀AEsi∀Aa←S9iKd@↓S]Ge∃[K]i∃HAEK→←eJ~)iQJA→Segh↓GQCe¬GiKd↓SfAY=CIKH8@@Q¬∃M←eJ↓iQJA	siJAA←S]i∃dASf↓kgKH0AiQJ4∃gSu∀@AMS∃YHASL@AgKPAk`@↓M←d@\[EShAEsi∃fAC]⊂@AiQ∀AS]I∃p@AC9HAS]⊃SeKGP~∃MS∃YIfA¬eJAG1KCeK⊂\R@A%LAESQf@ltDnACe∀AuKe<XAiQ∀Agie%]NASLACggU[KHAQ↑~∃gQCehA%\AiQ∀AQSO [←eI∃d@nA	SifA=LAiQ∀Ao←e⊂Aa←S9iKHAQ↑AEr↓β	$VD\~∀→!)/I&r@@@@@@@A7∨@znbb0AβεzDe:@AA)3++<@bdX4∀ZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4Z~∀@@@@@A!)/I&rAβ⊃$~∀~)β	$t@@@yA)2Of↓YS]J↓]k[E∃d|~∀@@@@@@yC⊃IeKgLA←dA	siJAA←S]i∃dAM←HAgie%]NAi<AEJAMK]h|4∀~∀~))QJAA)/%&dA++≡↓I←Kf↓iQJAMC[JA¬fA!)]%&nA∃qGKaPAiQCPAiQJ↓gieS9NAgK9hASf4∃]←h↓BAgi¬]ICe⊂@n[E%hAβ'
∪4@AMieS]≤XAEkPABAgQeS]N↓←L@@d[ESh↓GQCe¬GiKeL~∃iKI[S]CQKHAEdABAu∃e↑@Q9kYXR↓GQCe¬GiKd8@A)Q∀Aio↑↓QSOP↓←eIKH@AESQf@Ph@`~∃C9H@d`@AESiLRAS\↓KCGPr[ESPAGQCICGiKHAeKaIKgK]PAiQJ↓≠)αAC]H↓π∨≥)I∨_~∃-KsfX↓eKga∃GiSm∃YrXA]QSGP↓	CiBA	SgAC]H↓∪∪∩A⊃SgaY¬r@AW∃sE←CIIfAQ¬mJ\~)βfAo%iPA!Q/%&n0Aβ	$,b@AG¬\AG←9iCS\↓KSiQ∃dABAMS[aY∀@AQC1L[o←IHAa←%]iKd4∃i↑AQQJAgQeS]N↓←d@A∧AEsi∀Aa←S9iKdAQ↑@AE∀AS]GIK[K]QKHAi<AOKhAiQJ↓MSegP~∃GQ¬eCGi∃d\~∀4∃)QSLA++≡↓Sf@A%[a←eQC]hA	KGCkMJA←GQCXAG=IJ@@@`f@PA←d@↓G←]iI←X[ε$AI←KL~∃]←P@A[K¬\AG←9ie←X5ε@AS_As←jACeJ↓gK]I%]N@A%hAi↑ABA∪%∩@A←H@A	CQBA	SMF~∃I%gaYCd\@A)!JAG←⊃JAeKAeKgK9iS]N↓G←]iI←X[ε↓S\Ai!ChAG¬gJASL@@l`@XAoQ%GP~∃QCWKfrAESQfAi↑↓eKae∃gK]h8@@A)!JAG←⊃J@l`@Ao←e-fACf↓G←]iI←X[εAM←d↓CYX~)!)3f0Ag↑A%hAGC8@ACY]CsfA	JAgK9hAS]MiKCH↓←L@@@`fAi<Agi←@AB@A)←D\@↓≥←iJ4∃iQCP@As←T@A[kMh@Ag∃]H@AQ/≡@@X`af@Qio↑AG←]Qe←X[OfR@↓i↑@AMi←`@↓BAU←λ~∃S[5KISCQKYr\Aβ]←QQKdA5KiQ←⊂AM←d↓gi←aAS]NA∧A!)2↓SfAi<AkgJAiQJ↓!)∃∨	0~∃+U≡AoSQPAiQ∀A⊃β→PAG←]Qe←XA→k]Gi%←\vAMKJAa¬OJ@bDh\~∀→!)∂∃)_@@@@@@@A7∨@znbb0AβεzDg:@AA)3++<@bfX4∀ZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4Z~∀@@@@@A!)∂∃)_Aβ⊃$~∀~)β	$t@@@yA)2Of↓YS]J↓]k[E∃d|~∀@@@@@@y!Q2OfA1S]JA
QCeC
iKeSMiSGf↓o←eH↓SfAe∃ike]∃HAQKIJ|~∀4∀~∃)!JA!)≥)_AU+≡Ae∃ike]LAS\A¬	$Vb↓iQJA1S]JA
QCeC
iKeSMiSGf↓M←d@↓iQJAA)2~∃]Q←gJ↓YS]J↓]k[E∃dASf↓S\Aβ⊃$\@AQQJA[∃C]S]≤A←LAQQJAY%]JAG!CeCGQKeSgQSGf~)o←eH↓SfAKaaYCS9KHAk9IKdAQQJA∂∃)→∪≤↓++≡A=\AaC≥J@nn8~∀~∃9∨)
tA∪L@↓B@AaMKkI↑5iKYKQsaJA%f@AG=]ie←1YKH@↓ISeK
iYr@↓←dAS9ISeK
iYr~(QiQe=kOPA∧AGQC%\A←L↓agKk⊃↑[iK1Kisa∃fRAEdABA	¬iBA	%gFA←H@A∪∪$AISgAYCrX4∃iQK8AiQJ↓	CiBA	SgAEShQESh@hZ[QQJ@d@XX`A	ShR@↓←dAi!JA∪∪$@AESP@QESP~∀`Z5iQJ@P````@XX`A	ShRA]SYXA	JA←\↓S\Ai!JAGQ¬eCGi∃eSgi%GfAo=eH@A→←dAi!J~∃aMKkI↑5iKYKQsaJ\4∀PTSETL          [OP=711, AC=14]  PTYUUO 14,
--------------------------------------------------
        PTSETL ADR

ADR:    <PTY'pε↓YS]J↓]k[E∃d|~∀@@@@@@y]∃nAYS9JAGQ¬eCGi∃eSgi%GfAI∃gSeK⊂|~∀~(~∃)Q∀A!)'∃)_A+U≡AgKQfAiQ∀@AYS9JAGQ¬eCGi∃eSgi%GfAM=dAiQ∀A!)2AoQ←MJAYS9J~∃]U[EKd↓SfAS8Aβ	$↓Me←Z↓iQJA]←eHA¬hAβ	HVb\@↓∪\Ai!JAYS9JAGQ¬eCGi∃eSgi%Gf~∃]←eHX↓←]Yr↓ESifdX@f0@jX@`X@rXbbX@DfX@bPX@bj↓C]H@Dl@PbTbjfl0X`AE%ifR~)GC\A	JAGQ¬]OKH↓ErAi!J@AkMKd\@↓¬Sh@`@Pb`@`XX`↓EShZ5∪≠!¬%(RAG¬\@AE∀AgKh4∃Ekh↓GC]]=hAEJ↓GYKCIKH\@↓∨iQKHAESiLAS\AQQJAo=eHACPAβ	$,b@ACIJASO9←eKH8~∃'K∀AiQJ↓∂)→%≤A++<A←\AACOJ@\nAM←HAiQJ↓[KC]%]OfA=LAiQ∀AmCe%←kfA	SifA%\~∃i!JAYS9JAGQ¬eCGi∃eSgi%GfAo=eH\~(→!)→=βλ@@@@@@@A7∨@znbb0AβεzDk:@AA)3++<@bjX4∀ZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4Z~∀@@@@@A!)→=βλAβ⊃$~∀~)β	$t@@@yA)2O`~β3';*β;W7⊗+I57o+OQβ⊗)β¬β&KOC3∂Ix4)α↓↓↓↓α↓↓sπ&#K↔O~β?Iβ↔KS∃βε{';S/⊃β≠?∩βOSKNs≥x4Ph(4*&C∃αB$b>ε⊃¬*V=↓εc?π∪~β¬β∪O≠C3πJ;Mβ3Ns∃↓β.#'S?∩β←'SBβS#∃ααεN∞LIβOS⊗K;≤4W≠C↔∂N3'↔⊃αβe↓π##∃β>{K⊃↓εQ↓α"I-Er↓α'→αβS#∃αβ3↔≠"β#π32↓β?→ααε∩I[	β'LhS;?9oS↔K=bβS#↔rαε∩I[	β'MεOOWn+⊃↓β&yβ∃ε	βg&)βC?NsS↔Iπ#=↓β&C∃βO'∪';≥Xh+∂#∂∪π∂S/∪Mβπ⊗)↓βCN≠/↔⊃π+A↓β7∪?5β&C∃↓β∨#K';:β←'SB↓α&2$∪M1β≡y↓βSF)βg&(4+C}K;S↔∩βO#?.c⊃βC}K;Qβ&yβS#*βgS*β+WO"β↔≠␈∪∃βSF)βOS⊗K;≥9ααS#∃αβ↔;⊃ε{_4+&C∃↓β∨#K';:↓β'Mε#↔≠'v+⊃↓β↔I↓βSF)β≠'↔≠Q↓β}≠∂WK⊗+;∂∃αβ?→β
↓β;Wfa↓β?∩βπ84V∂S'6S'?rβ∂#π⊗∂S↔∩q↓αSF)βπ∂&K[πSN{9↓β≡CπKπ∨#↔I1εK→βπwI1β'~↓β3↔7!β?8hSS#∃ε+;⊃β}1βS#*βOSKNs≥β'rβS#∃εc';∃ε+∪'S␈⊃mβSOβ';≥ε≠πKKN∨∃β⊗+SWKrβ←'3`h+O'oβ3e↓ε∂S'6S∃↓π##∃↓εc';∃αβWA↓π#=↓β∞s⊃↓βNs∂3W&K;≥↓αβπ;eαβπ∂SO3πS'}p4+∂FKπ∂&+Hαr∧	f␈&T∞FF∂D
⊗2πMRπ∨N-⊗v:∞|↔~πL↑&nNl≡F."∞⎇↔&B∀αεw]MBbπMVph.O↔εNltε≡∂.-⊗∞>T∞&/'↑-bαπ⎇≥Fbε≤>FO6≡LRπ&Tπ∨'-≥f:α.W"π⎇≥Fbεm}Bαε≤LBελQ,6∂↔-≤⊗>*∧∞&/'↑-bπ&t∧εO"d∧α∧Nd∂⊗␈*∧⊗∨&≡l↔&*∞Mε*α∞,Rn.M≡F."∧
FNvT∞vO&↓Q&∞w≡↓~
≥Yh_L↑z9→.4λ_x..Z89lT≤Y=∞↑[Kλ∞M→(λ≤⎇~=L≡~;{Dz_<L≤⎇→<D∧≥z;
D_Y#!-;\y..→9λ
≥H≥~T≠~;LT≥z→.,=Y<D∂;⎇(∞O<→9∧
=C!!"U~
≡h∃5)t≠{[∂∀≥{|M>h~9D∞~→(
M;Y(
n;8Y.$_=λλ_∀H≤n8z9M≤<h_$	22(
}H⊃_.L#"Q
≡xh→
≡|≠_/↔h≠⎇
<]z.<(≥~
≡h~<d(≠[e]|H∧
~→(
m|[8-D≥<y$
yHλ∞M~<h
Z3c"M≡h≥z.Mλλ_$∂Y<[d∧_=λλ_∀Kλ∧∞z~8m∧≤y;\⎇≤h∧∂;⎇<D
⎇{H∧
~;Y$9~=
}Hλ≥
t_Y#!-≠x9\λ≥z.Mλ≥~T→z=L]H≤⎇∞-;Yh¬∞≤[⎇M≤→9λ∂≥⎇(_.,(_=∧(λ→
≡|≠_/∃+Hλλ≤]→<AQYz=M≥Yh≥

<h∃*Ykλ≡-}(≠8/∀≤Y8,D~;\∞↑λ→\M⎇(≥~T≥→<M];X;∧∞≠h→l↑λ≥~T≠~;LQ"XX,=h≥z.Mλ_;O∀_z_-ly<h∞M_=λ
\>(~≡Y(_L\;H≠,≤→+C!!"TtλXr03∧	Su⊃'$∩9H-=λd¬≥~→$εε¬λ-=
(
≡h≠{D
;H≥
(→~.>≠_>$}h≠~-l#"Xm<X8nL<Z<nM8|h∧∞{|Y∧∧≥z→-dλ≥~Tλ∀∃	Ip1λ∧
53h∧
<hλ⎇=Y;EDλ≥~]H→=L↑↑#"L=_<X,>→<H∧∞≡<→,Dλ≠{D∧≥~→$∧~y>,-x<Y∧∧≥;]
≥λλ_-lλλ~-l{≥9
≥Yhλ∞M→(→M≡\⎇β!,8⎇~.l=~;mdλ_z≡X8⎇↑Hλ_,n→<H∧∞~→(∧
∃∪∪h_λλ≥m≥≠λλ,(λ≤
L8y9∧∧~;]
t≥~→!QY~<n
_>)n4λ∃∃∀λ~;N∞=λ_N\YY<D∧→[{
M⎇y9∧∧_↑(∀λ_z≡X8⎇↑Hλ_m|→(λ
|H
ε↓"J∂	X5⊂/GM];≠πeλλ_-dλ≠⎇
<]z.<+:;.
||z,-→(λ=y→*'4λ≥~Tλ
ε∧λλ≥m≥≠λλ,#"YM⎇≠≠⎇l\λ_↑$∞~→(=_<X,>→<\d\[{$∞~→(∞,+99
≡→9λ
M;Y+D∧∩;H∞M~<h∞|>+λ∂≥⎇#"L<;H→M≥Yλ≠n↑λ→>≤⎇≠≡$∞z_=∧∞~→(∞↑y<H∞O<→9∧≥<Z-lh≤Y%\9~=
≥Yh≠ld_(≠
≥Y+C!!"R;D∧≥~~.4λ≤|\z8;∧
;y→%Dλ_;D∧∩3Uh→5λ→/8⎇=\λλ_,n→<H∧∞~→(∧
∃∪∪h_λ≥z-Mβ"YN]X⎇~-⎇H_<d∞<⎇8-Eλ≤Y.N<[Z-lh≥~T≠→;L}~λ≠ld≥~→$∞Y+9,M=→9∧∧≠~;LT≥;[↑|c"L][⎇9m∧_z_.,8⎇→..h_<LT≥≡<\λ→≥.-;Yh∞M→(≤LU99~.D≥≠h
l8<[∂∀→Z;
D≥~→$
∃⊗#!-;\≥.D_]9Ll<KH∧	;Hλ∞M~<h<<y+∧∞~→(∞∞[y|L≥(λ≥m≥≠λ_LT_8⎇
≡X=→,Dλ_;LD≥~→!QR3Uh→5λ≥m≥≠λ≤L↑≥<[D∧_(≠]Y⎇~∧
yHπ4λ≥~T≤≤[l}X;(∞=≠⎇;D≥~→-dλ≤Y,≤λ≥~Q"\|\z8;∧z_<L≤⎇→<N4λ→\M⎇(≥~T_]9Ll<Hλ¬	3Pr
9λ~<d∞Y8{m]9;Y\λλ→M}H≥~
≡c"\∞↑\≠|lU(_;LD≠≠{n∧_X8m4≥≠h∞M→(∩)jp25¬a"C"JM→(
εε¬Fλλ_M≡λ~;D∧≥~→$
~;Y$∧_z_.,8⎇→.-<⎇~,>h≥{n,λλ_l≥H_Y$∧≤y=∧;Yβ!,{→8.,9λ_O∀≥~→$
q5∪	→H_;LD∀∃∀hZ∪λ∃*Y|h_-lλ~<d{→8.,9λ_O∀_(∀HZq5AQC"Tl\(_;∞=h≥~T∩3Uh→5λ∃*Yh≠{D∞_9y$πh_-lλ≥~T⊂0uλ9∀H∃*Yh≠{D∞_9y$∧∞,(m|C"M}~→<D∞|→8m≤;λ→L\=≥<L↑h≤Y,|<Y~-lh≤Y%\9~=\λ≠~-l<kC! ↓J∃∩Sh+λλλ∧∧λλλ∧∧⊗stπVl,+∧λ0o,&k(λ∀
K553dε-Kβ!%+++%U+++%U+++%U+++%U+++%U+++%U+++%U+++%U+++%U+++%Q"Hλ∧∧λλλ∧
∃∩Sh+λ⊂1
!"Hλ∧∧λλλ∧π→<\M}H≤Y.N<[Hm|H∩λ→∃λ_-lλ⊂sij+;Mt~[xD
≠yyl\λ~;Ga"Hλ∧∧λλλ∧π→<\M}H≤Y.N<[Hm|H⊂iyU+--xH_l≥[[⎇∧Y(_m⎇]~;N\9∂C!$λλλ∧∧λλ∂∞>8xy.>h≤Y.N<[Hm|H⊂iyU∂C!!"P1
'Hλλ∧π≤≤y.\≠k=]→=≡.(≠~-l(≠]-\Y<OAQHλλ∧∧λλλπM;Y→/¬λ≠|D∞z>_M≡λ≠X-\+λ≠ld_{{NN[{λn;X⎇
≥{OC!!"P{mn≤[{∧];XnM;{\g!"C"D∧∩;Y←λλλ∧	X;9$∧λλ⊃N]X⎇~-⎇Hλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ
>8xy.>h∀Y.N<[C!$λ+%U+(λ∧∧++%Tλλλ¬U+++%U+(λ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧¬+++%U+++%U+++!QHλλ∧ε(λλ∧∧λ∩⊂)Jλλλ∧
⎇≠|∧∞~→(∞∞≡)|d
[xKD∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∞zz<∞1"Hλ∧∧Hλ∧∧λλ⊂iyUλλ∧∧⊂{{NM;]9$∞~→(∞∞≡)|d
[xKD∧λλλ∧∧λλλ∧∧λλ→
}8[→$∞zz<∞1"Hλ∧∧hλ∧∧λλ⊃	xQHλ∧∧∃≥<Md≠yYD8z≠m≥Yh≠ld~;\∞↑λ≥≠d∞≥≡+D∧λλλ∧
[h≤m=<β"D∧λλ
∧∧λλλ∧λ∪sH∧∧λλ∃∞↑[H≠md→8z
⎇;Yh
|H~;N∞=λ≥
t≤≥≡%dλλλ∧∧λ≠[d∞zz<↓QHλλ∧ε(λλ∧∧λ∪∪hy3Hλ∧	≠yh
≥H_(
-xH≠md≤≥≡%dλλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∞zz<∞1"Hλ∧∧
Hλ∧∧λλ∩*x25∀d∧∀zz.∧~9H∞∞≡(≥l≥=~;Lt→[|D
;\≥.EHλλ∧∧λλλ∧∧≤zz.∞c"H∧∧λ
h∧∧λλλλ9∀PQI∀λ⊂{\<H≤∞O)|h
≥\≥=∧]9YL↑KHλ∧∧λλλ∧∧λλλ∧∧≠[h∞=z<β!!"C"J
∩SpK∧λ~<d∞~→(∧>≥→-l→9λ

⊗(λ
-xH_m⎇]≤[mDλ∃5)uHλ⊂-o(λ≠ml(λ≠ld≤y=L↑X;β!,{{]∞-{λ→N]X⎇~-⎇\h_l≥H_Y$>→<L=<y9∧
⎇Y<D(∀∃∀≥z=

⎇=λ∞<;Y~-lhλ~.D_;↑!QXz_.,8⎇→.$≤⎇≤M≥Y|kD∧∃~→${{]∞-{λ~.4→>→.,z<y,D≠⎇Y.$≥~→$
[xH∧∞];[M≥Yh≠ma"]~T∀∃⊗$∞z≠|lTλ≠~-l(≠]-\Y<H
≡hλ~-d⊂1∀G4_(λ∂,<[h
M;Y(
n;8Y.$λ≠9,≥\h≥
#"Xm⎇]≤[mD~<h←→<Xm≡y9λ∧
⎇Y<D∂;⎇<D
⎇{H
-xKH∧∧∃~~.4~<h∀→{{lDλ≠9.M≠yλm|C"NN<[Z-lh≠{D;Yλ
|YH≥
(→8m
z;Yd
yH~-n≥=λ∞Mh≡;n↑H~[l%C"C!*~→(∞⎇|Yλ≡λ⊂1
%hould contain either the index or the  sixbit name
of  the control  function desired.   The currently  available contp¬=X~∃MU]GiS=]fACIJAYSMiKHA¬E←mJ↓oSiP↓iQKSHA]C[∃fAC]⊂AS]I%GKf\4∀~∃)!JA⊃β1(@AMU]GiS=\AiC-KfAi!J@Ag-S`Ae∃ike\↓←\@AMkGGKMfAC]⊂@AiQ∀AISe∃Gh~∀!Kee←HRAeKQke\A%LAiQ∃dβ∃βO→β;=εS?	βf{∨∨↔"β'9β}qβS#*αBRer↓α'→αβg?U∧Bε2PhS¬β+}⊃βS#O→β←πJaβ'S~αRReαβ'Mβf+≠QβNqβWO/⊃β7?&)βπ;"β∂?7n;∪Mαβ∂π;v{Qβ(h+Sgε+⊃↓β.KS#↔∩↓βS=αβS#∃αβ7?;O#?I↓ε{I↓β&y↓βSF)↓β+}⊃↓β?r↓βS#∂!↓αR%ImβS>x4+∂}sSK?bj
∨MαC?∂S∞aβ∂?&)↓YAαIβ←'faβCW"βS#∃¬"ReβNqβ7?vKS?Iεk?∪∃ph(4*&C∃α∞|rQβ≠.s∂S'}qβSπ↑+MβSF)β∪?.∪3∃β≡['Aβ⊗+SWKrβ?9β∨+∂∂↔∨→1βSF)β∪'⊗+∂P4W∪↔SW⊗qβ'→π##↔K*β'Mβvyβ+?∩↓β3?>;↔⊃βNqβ?9π##∃α¬"e1β∞s⊃βSF)↓βONs∨3∃π≠/'@hSK↔S/∪9β'2βS#∃εS?	β≡;;?"β∃β≡{;S'w+↔⊃8hP4*SF)α∩>41βπ;"α∩>9ε3W;∂&K?;Mαβπ3←∂KMβS∞[∃βSF)β∪'⊗+∂Qβ⊗+SWKsY↓α∩|2→βO/#L4+⊗KQ↓IB↓↓!AbaIAAε∪'Q%αβ'9β&C∃αR%I↓α%|yβOS∂#WM↓π;?K⊃αCS#W~↓βSW⊗s';≥∧z~_4V+∂#?Ns≥%↓ε;⊃α$z9↓β≡c↔πK~βS#'~↓β'"↓#SW⊗s';≥αβ↔∂#}K;≥β⊗∂-↓∧z9%9ααO↔∀hRO↔∂&K?9↓~qEβ≠␈⊃βS#*β7↔πvK;≥β}1βS#O→β'"p4(4U##∃αdz≡&9ε3W;∂&K?9βf{∨Mβ&C∃↓α¬"eβ'rβW;∪/⊃βS#*αBB9ε{→↓β&C∃β∂}sSK?fc';≤hS+?	ε;⊃β≡{C'↔~βS#∃ε≠?;S⊗{33'v9β+?∩;Mα∪O≠-αB∧qβπ;"βCK'6K3↔∨/→mβSF)β+?⊂h+;Wn∪↔Iβ}1βS#*↓β;↔:β+?	εKM↓β⊗+SWKv+⊃βπ"αε∩I[	↓βπv!βS#*βO/'α↓βK↔'+K9βO_4+S∞[↔9βN1βS#*β+?	ε;↔SMπ≠W∂∂/≠O≠Wfceβ3};∨↔⊃εK99↓∧K→βSF+K∃βO→↓βπg∪↔π∪Jβ∧4+V{	β3};∨↔⊃εK9β?rβS#∃¬αRe1π##πQεS?	∨~β;W7⊗+Iβ'~βK↔S/∪;↔⊃εK9↓α"I-Eε;⊂4W##∃β&KK↔∂"↓βK↔'+K9βO→βSπ↑+99↓α↓"S#O→β'Mαβ¬β∨}{⊃β←∂I↓βSzβ≠';"↓β?W"βS#∀hS;W7⊗+Iβ?2βS#∃εS?	βf{∨∨↔"β'9β}qβ¬α¬"e9%αα'→β&C↔K∃εKMβ;zβ+?	αβ3?∨>+⊃β'ph+?9π##∃α¬"eβ/!βS#/∪∃βπ⊗)β;=εS?	β≡c?SMε[π'f3∃bβk↔Kzβ'M↓π∪↔SW⊗s↔⊃βNp4*ε%⊃-Eβ∞s⊃βSF)β∪'⊗+∂Qβ⊗+SWKrβ'Mβ&/↔9ph(4*&C∃↓αM:ε&R~β≠W;∨#'?9αβ3↔S~βg?Uαβ≠';"β?WQαβ'→β&C∃↓α¬"eβ'~↓β←πO#';≥ε3?H4VK;CW"q↓αSFQβ'~aβ'→π##∃α¬"eβ#∂→βK↔'+K;↔"βS=βn{;'S␈⊃β3↔6+1βπv!β;↔.#Mβ∧hS7?;O#?Iβ≡{77πv!↓βSOβ↔⊃β&yβ'Qb↓β?IεK→↓β&C∃β+}⊃βKWvs';≥αβ?9β&C∃↓α¬"eβ'_h+←πO#';≥αβ≠?I¬"Re↓εK;CW"aβS#.q↓βSFKMβ≠.s∂S'}q↓βO↑KCM9α↓α?SF+K←'≡)1βSF(4+∪O∪↔∂Qπ∪↔SW⊗qβ'Mπ#π/↔rp4(4U##∃α≤bJ
~Jβ≠W;∨#'?9ε≠3↔π↔→βS#*αBRe?→β';π+Qβ.3≠↔Iph(1↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓αN,~R&>r↓Q56$JNB2
Iα>V%αVP4Ph(4*&C∃βπ6'3π⊗K3'SJ↓β?→ε#'OCfgMβ6{I↓β␈+SCW"βCK?6K∪↔Mαβ∨K↔∂!β≠3/C''fKSd4V;⊃β≡{;[↔vK↔;∂*β'9βn;eβπ∪?∨K∞kM9↓¬##'Mπ≠↔∂SN{9β↔Gβ3π'w→βO↔6+Kπ1¬*V?LhSS#π"↓βπ3f{]βSF)↓βW≡+IβSz↓β∪↔&+K7'v)β←#∂!↓β←Nc1βππβ↔πIαβ?9↓ε	β∪'∨β3πeph*S#/≠∃αV,{Mβ'v≠3W∪+QβS#*αBB&⎇#MβSzβO↔3.≠Qβπv!βC?≡KS'?r↓β[π⊗K?WM¬α&⊗∞-_4*>2↓αBε∧*I↓β}qβg?/⊃↓βO∨∪↔↔9Z↓βS#*↓αB≡LzSMβ∞s⊃↓α-α≡&>"↓βS=αβKW9ε#'OCfd4+π∪?∨K∞kMβ?rα∪πS
α∪'O∨→βπ;"α&&'~βπ;⊃π#=βO.c↔∂Qε3K?5π3πK'␈+M↓α∧J⊗∞⊗~α>_4T:2εN~↓β?9∧J&'MZ↓α∩∩≤Bε9↓π#=βπ∨W'K*↓βπ;"β7π;OβW3π&)↓β↔G#K¬↓∧#πS¬∧#'OhS∂#πvs↔3MZαZ∩Nl
AβSzβO↔3.≠QβSF)βO?/∪∂↔Mε3?Iβ&C∃βCN≠SWK*β?9β
α∪πS
α∪'O_h+∪'∨β3πeZαε∩Nl
A↓β&yβO↔f+∂Qβ&C∃↓β≡{W;⊃π≠?WK≡)βS=αβ∃β≡{;;↔∨#↔⊃↓π#=βSF(4+Oε+π/↔∩↓βπO≡{∂'π&+⊃β←O#!↓β
β∨'[.q↓β∪O≠C3πKYβπ;"↓β¬β6+]↓β␈##↔Iπ∪↔3π&+⊂4*-*?M8hP4*¬εS?	β↔+;;'v9↓β?rβ¬αB%Iβ'Mαβπ33␈;↔⊃β&yβWO*β7?O"↓β?→π##∃α-*?M↓εK9βSFKL4+≡+∂S'}qβS=αβ∂?;'∪?1β&C∃β∪O≠C3πJ↓β?→π##∃βV{	↓β␈;;';:βS#∃ααBReαCC↔KFCL4W##K?.;!↓β
β∂#πNq↓β?2αBRg~I9↓↓¬##WMbβ←'SB↓βS#*β↔c∂/βS'?r↓β?→αβS#∃¬*V?LhRBBN¬I1↓α$"∞"εra↓αε%~6εAb↓βπ;"↓α
⊗-↓1βπfa↓αV,{M↓βNq↓βSFKM↓β≡+∂S'}qβπK(h+↔c.≠WS↔"βπMβN1βS#*β+?	π∪W;;Ns≥↓β}qβS#*αBReπ;πMβ⊗+π33JβKW;vK;≥↓ε{9β''_4+?>s↔I∨~β∪'Oεcπe8hP4*SFKMβO.≠S'?r↓β∪?/→α:>"β∪'O∨+OM↓εC?]β&yβCK};Kπ5αβS#∃∧J&%β␈⊃↓α∪∂#¬α∪O≠4+&KOC3∂IβCK}≠↔OO␈∪M9↓¬##↔O*↓βCK}≠↔OO␈∪Mβπ⊗)β↔cεcπ';.!β'9ααO↔∂&K?9↓!9H4V;⊃↓¬≠↔∂SN{9↓↓!9M1αβK↔Oε+∂S'6+3e9αα#?←/3↔I1αβO';≡)↓βSF)↓βS>yβ∪'∨β3πdhSCK?≡+OO?↔→βπK*βO?7/;#πQε#'≠≠/∪↔;QεK9βSF+'Iβ␈β↔Kπ&K?91∧IβO#∞c1βπ'#↔7C h+S=ε+cC3∞K9β≠␈⊃β↔π≡Aβ#?:β'Qβ>{K/Mε;⊃βF{]β'"β';S/∪π∂S~β←'SBβS#∃π≠gOS.h4+OzβS#π"βg?Uε≠π9β.s∪↔K∨#π;⊃π;#πQπ##∃β6K'?/→αVV␈→βπK*β';S.s∪↔⊃αβS=β&y84*≡{7∃β⊗+≠↔K.s∂↔MεK∃↓εkπ∪∃π#=βOε+∂'≠N→↓α&LIβ?I∧"⊃↓βNsOSK.≠S'?w→mβSF+O∀4VK∃β∞c1β↔Gβ3π'v+⊃β'rβS#∃ε?[*k7↔;&K?;↔"βO↔∂&K?;Mph(1↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓Qs	↓α&LIα∪'∨β3πg_h(4(hRS#∃αα&&%αβ∪'Oεcπe↓πβK?∂/≠O?IαβKW;~↓β∂?w#';W␈+O3eb↓β↔c.≠WS'v9↓β∪O≠C3πHh+';∨#KW∂&K?;Mε3K?5εkπ'9αβ7↔7␈∪e9↓¬##∃β≡{∪∃↓εKQβ↔F+∂WS/→β'Mαβ3?∂∂#↔⊃βNp4+OO≠S↔5ε3K↔∃π≠S?K∞;∃9↓∧;eβ≡Cπ;∨*↓βS=ε	βO'v;3∃β>{K⊃β}1βS#O→↓β∂}#∃β←Nc04+≡WO∃π##∃↓π∪↔OWg#π;Qε#'OCfeβSz↓β∂#∞s∨∃9αα¬βW≡+I7←⊗KSS↔r↓α&&Jβ∪'Oεcπd4WβK?∨⊗5β∂∞qβ∃αβKW9ε∪eβW≡K;≥β&C∃↓α-α≡&>"αVV=r↓↓"SF)↓α&LIβ';∨#KW∂&K?;LhSπK∃αβ↔cCf';↔"↓β'9ααO↔∂&K?9↓!9I9J↓↓αV∧:&>QαβSπ//→↓βπ~↓βπK?+7↔;'→βS#(h+3?≡S'?rβπ;⊃αβ3↔;?#!β?2βS#∃αβ∪'Oεcπeβπ∪?∨K∞iβS=αβ∃β↔+99↓ααS#∃π≠gOS.h4+∂␈β'↔Mπ##∃↓ε#'OCfeβC⊗{∨Kπjβ?WQαβ?→β&C∃βW≡+I∨Mαβ∂?K*β'7π>)↓β'w#=β≠⊗+∀4+∨#?Kπ>)1β7∞[';≥π#Kπ;≡3?K7∂#'?;~βOW∂BβπMβ∞#∪K↔∨→βK↔f{∂πSN{984Ph*S#*βOgO&+5↓β/≠↔Mβ&C∃↓β6KKOQπ;?K⊃αβ'9βN{WI↓πβK?∨⊗5βSz↓β';&+K≠π≡)β←'&@4+?&C↔I↓ε#'OCfe↓βπ∪?∨K∞kMm↓πK?U↓∧jVNQεK;∂3.#∃↓β∞q↓β↔G#K¬↓π;?K⊃αβπQβ&C∀4+⊗+∨';vK;≥β}1β↔π≡A↓α&LIβ∪'∨β3πeπβK?∨⊗5βg␈)↓β←⊗KS∃9ααS=β/C'Q↓ε3K?5π##∀4Vk'∪∪f)β?→πK?WIε#'OCfeβC⊗{∨Kπjaβ';≡+KQβ
α"2QεK;OS↔+∂S'}q9↓α␈##↔K>KO∃0hSg?Uπ≠#?Wf!βO'oβ3e↓πβ3π9π#=β≠∞c1βSG∪?W∨B↓βS=π##∃β.s⊃β?2↓βg?/⊃βCK};Kπ5ph*g?*β;↔↔"β;?QεCπ[∃ε	α"2"βπQβ&C∃β↔v!84(hR↔[↔↔Iβ+?∩βKW;vK;≥β}qβ¬αLJ%β'~βC↔KnKSS↔"βS=βF[∃β/↓βS=α↓IAβNs∪↔C.s∪↔; h+∪'∨β3πeπβK?∨⊗7M9αα¬α&LIβ∪'∨β3πeπβK?∨⊗5β'~β∂π3f+⊃β¬πβ'↔∂*↓β?→ε;3πO~`4+πv!↓β↔∞≠!βCN+∂∃↓ε{→β∨fOM↓αC#↔K.≠S↔∩βπ⊗+['π&+⊃↓α∧z≥%βFM↓β
β;W7⊗+H4+⊗+S←↔.q↓↓Aε;⊃↓β	]↓βNs∂3W≡K[∃9ααJε&"↓βWO/→↓αB|9↓E]Z↓βC3.O∃↓εs?S∃π##∀4V{['␈+Mβ∂}s≠3'∨!β'→πK?WIπβK?∨⊗5βW≡+MβSFKMαB|9βS?zp4(4UK?Uβneβ∂F{?O∃π;#'∂B↓β?→πK?WIπβ'↔∂/→β?→αβ_∞f≡>2ε∂,Tπ&z,Rαπm≡6N⊗LTε∞vAQ'>F≤=αε∂,Tαπ&t&*ε≥nfO≡≤-F*r∧∧¬&FTFO∨
L↔Jε=|F*αmw∩ε≥dαεNnm↔≡N-LR¬∧xqPV≡⎇nFNw\↑2απMtαπ⊗↑=⊗&*∧
⊗rα∞?↔∨&]Tαε7,\Rαπ>Mw⊗∞|Tαε↔↑DαεO4∧π≡N↑
GJεm}@hV←V∨/L\CZπ≥}Rεn∨∀π⊗.≤>FO6≡LRεOD↔"ε≥o∩π&≥\Rph!Q%&FT
vvg∀	∀LJ
≥g∨'.\7&N⎇dπ&F≡DεO~
≥Ff.|≥BεNd∩π/<↑"ε&≡>εf∂∀∞π⊗}},⊗jε≡1PW&T∧Tm4
⊗w∨N.V∨&≥⎇brα
Mrε>↑Dπ&FTV66\>Bε}d∩∧TZ5Bπ/<Tπ&FT∧∧U≥$⊗v"⎇} hU8~d*ε≥n7'↔\>FN}n4αG≡\T¬≡.>M⊗}rε⊗Bs∩∃aPPh*Mε*¬8YBεNn>G↔.>M⊗}r∞⎇⊗fb
mw"ε,Tε∞fM}v."∞Mrπ≡]LV∨"∞=vn.⎇lRαε]N6*?4	∀LHQ.Vvf↑>2πN}TαεF≡lRεn≡∞ε."∧∂⊗␈/$FO∨
L↔Jα
}W'π↑Dπ&z∧∞FF∂D	∀LJ∧∞W≡Nltπ&FQQ$%¬_9E∩¬ZYrαα∞<V*π≤v*β⊗7∩Jα
}"πN}TεF∂lTαπ&T¬-∧t∞π⊗Om≥F.>Udαα¬ may
display on a III that is not in use.
                       4.2  Data Disc Displays


The Data  Disc (DD)  display processor works  by storing  complete TV
pictures bit by bit on a disk.  The disk we have has =64  tracks; two
tracks are needed to hold  a complete picture.  Thus =32  complete TV
images  can be  stored on  the Data  Disc.  Each  combination  of two
tracks that makes up a  whole picture is called a Data  Disc channel.
The Data Disc hardware  reads the disk and  puts out a TV  signal for
each channel.  Each TV signal can then be routed by the  video switch
(controlled by software) to any combination of TV monitors (Data Disc
displays).

When  the  DD processor  executes  a program,  the  resultant picture
changes are recorded on the disk, and the displayed  picture changes.
The Data  Disc display  processor does not  execute the  same display
program continuously like the III processor.  The only way to  make a
DD picture disappear is to explicitly erase it from the disk by means
of a DD program (from either the system or a user).

There is no such  thing as a piece of  glass on a DD  display.  Also,
you should NOT include an extra word at the beginning of a DD display
program  as you  do for  III  display programs;  every word  of  a DD
display  program  is  executed as  a  display  instruction.   (The DD
instructions are explained in Section 14.3).

More words of warning:

The DD  processor executes  your display  program directly  from your
core image.  No address relocation is done; thus jumps will  not work
correctly since their destination addresses are taken as absolute!

Your Data Disc display program should end with a HALT instruction; if
it does not,  the system will  zero the last  word of the  program to
make sure it halts.

Finally, you may do a channel select only to your own main channel or
to an extra DD channel that you own or are permitted to write on.  If
you have no channel select in the fip¬Mh@b`↓o←eILA←LAe←kd@↓	λAaI←OeC4X~∃i!JAgsMiKZA]SYX@↓gKYK
hAs←UdA[C%\A	λAGQC9]KXA→←dAs=jAk]1Kgf@↓s←jA¬eJ~∃9←hA←8ABA	¬iBA	%gFAI%gaYCdXAS\↓oQSG AGCg∀AiQJ↓gsgi∃ZAoS1XA]←PAek\↓iQJ~)	λAaI←OeC4AEkh↓oSYX↓isaJ↓←khA%→→∂¬_A	λ↓π⊃β≥9_Ao%iQ←kPAgi←AaS]N↓s←kd4∃U←D8@@Q∨8AiQJ↓	λAI%gaYCdAae←
Kgg←HXA←]1rAiQ∀AMSeMhAGQ¬]]KXAgKY∃GhAS8~∃BAAe←Oe¬ZAoS1XAo←IVvAg<AC]r↓GQC]9KXAg∃YKGh↓EKs←9HAiQ∀AMSeMh@@b@Ao←e⊃f~∃o%YX@A	JASO9←eKH8R@@A∧AgKY∃Gh@A=L@AG!C]]K0@`@A]SYXA≥Kh@Ae←kd@↓[CS\↓	λ~∃
QC]]∃X@@Q%LAs←T@ACe∀A←\@↓B@A	⊂AISgAYCrR8@@A &CWMβ&y↓βO.c↔∂QαβS#∃π∪↔π0hS∂#πvs↔1↓αa↓βg␈)βO↔f+∂Qβ≡Cπ;;.a↓↓Qαq↓αg␈)βO↔*a↓↓Qαβ'Mβv{97k/∪=↓β≡yβg?(h+∪?r;Qβ∨/!βg?/⊃↓β7∞K9β∂F;;↔baβW"↓β?;gIβS#*β3?]αβ?K∪/⊃↓Uβ⊗KSM↓ε{→βSF(4+∂F;;↔b↓β;Wn∪↔Iβ∂∪∃↓β/≠↔⊃βNq↓βSF)βO↔f+∂Q↓αCO';≡)βS#/∪∃↓β∂∪∃↓β}s3e↓k→H4+≡Cπ;;.cM%9α↓αg?*β∂π9αβπ3←∂KMβO.c↔∂Qαβ∂#πvs↔1↓#↓.
↓ε;⊃β⊗)↓βπ∨≠WK↔"β?_4V;↔SSNs≥β∂F;;↔bα
9↓∧C?←↔6+I1βN1βg?*βO↔3.≠Qβ¬ε≠#π;v+1βSFQβg␈)βπK*β;?PhSπ33␈;↔⊃β&yβ←KO#∃β?raβS#*↓βO↔f+∂QβO→β∂#∞s∨↔⊃π#=βg␈+Iβ?>q↓β7∞K9β∂F;;↔`h+W;f+OMβN{Uβπ⊗)β;?"β?9β
↓α∪π&	α∪'≡→β∪'∨β3πebβ'9β>C'∂!ε≠πO∃αβS#∃π≠gOS.h4+←Nc1β;␈!↓βK.qβS#*↓α∩⊃πβK?∨⊗5β/!↓β←Nc1βSOβ∃↓β␈+Qα&db⊗≡εb↓α∩⊃∧~"ε:t*04+>KS#?/!βOS␈βC';:βg?W∩↓β+?∩q↓α'2βg?UεCπ[∃αβS#∃¬*B≥βπ∪'['f+∨∃1αβg?Uε≠π84W;K'S*β?9↓ε;eα$!↓β∂F;;↔bq↓α'rβπ31αβ?→β&C↔O∃αβ∂πO/→β←#/∪∃↓β&C∃βOO≠S↔4hSO↔3.≠SMβN{WIβ␈;9β7∞K9α∩"β∂#πvs↔1β6{Iβg␈)1β'"β∪?↔~βO=β↔I↓βO&KS'v9βS#(h*∩⊃πβK?∂/≠O?IαβπQβ
↓βOC.≠'π1π#←=↓π;?K⊃ε∪3?∂Z↓βS#∂!β∂?w#π';~↓β¬β≡Cπ;;.`4+O.c↔∂QεK9βSF)↓β≠O∪OQβ>{K⊃β∞s⊃↓β
β+W7αβS=↓πK?WIπβK?∨⊗5β'r↓βS#*βO↔∂}s⊂4+>{K⊃8hP1↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓Q9MααCπ∨*αCK'w#↔Iαn;'C.cπS'}p4(4Ph*S#*βCπ∨*βCK'w#↔I↓εKMβ←FQβ#∞s∪3↔~βS#∃αβCK'w#';≥ε{→β?/#CWQαβπ;⊃ε+∂#?. 4+S/CQβ?rβ∪'Oεcπeβ≡≠K↔↔w→9↓αv{K7πfceβg␈+Iβ↔w#'K∃π≠∂K↔.qβ'Mπ+O↔⊃αβπMβ}s∀4+&+cQβ∂∪↔¬β↔IβS#*βCπ∨*↓βCKNsS↔Ir↓α#?>+[↔Ibβg?Uεkπeβ&KK↔∂"↓βS↔G!β?W'βWP4W#=↓Iαβ∪'≠6+K↔;"β3?∨N≠π1βεKSMε{→βSF)βO∂⊗+↔99ααS#↔≡)β3?>K∂π1αβCπK'→β?_hSS#∃π≠∂K↔.qβπK*β∂π3f+⊃αBL*∞⊗M∧z→↓α∧
B⊗Iε;⊃β∂∪∃β;.k↔K.!β≠K}i↓A↓π#=↓E8h+';≡cWO'6)9↓↓∧+π∂!αβ7πeαβ∃↓πβ3π∂.!↓βπwK←#↔⊗)↓β?r↓βS#*↓βO∂⊗+↔9↓αβπM↓ελ4+∂}sS';?+?WMαβ∨K?/↓β?→αβ←#?f)β3'v+M9↓ααg?Uπ≠↔3↔∨!↓βSF)βC'.≠∃↓β}1βCπε+H4)FC↔K↔∞3S↔IεK/3'πS.!↓αBαIβ←#N≠!↓βO→βS=ε∪∃↓β/≠↔⊃β∨+KK↔w#3emαβπ31¬"Rd4WβK';&K;≥↓π;'31αβ∨=↓π#=↓β&CπQ↓¬αA↓β.sS'1αβg?UαβO↔3.≠Q↓β≡{7∃↓ε{S#↔∩αBA8hRπ∪∪O#'?;∞c3e1πK?Uβ≡9β∂F{?O∃π;#'∂BαBCMπ;'31ε∪∃β[O≠'3*β?9↓π##∃β≡≠K↔↔ph+π;"β←#'≡Aβ←'faβ∃εK;['≡K3∃r↓↓α[O≠'3*αBCMεK∃β≡'⊃β&y↓β*βπ∂SO3πS↔"`4+'w3'O'⊗c∃β?v+Mβ∪.∂S'6S↔⊃ph(4*Ns'S'∞c3e1ε;⊃β∞3S↔Iαβ¬αJ-~⊗Qα-*=↓#≡+∃↓βε∨∃↓∪)A%β␈⊃α∩BL~2I↓¬*V=↓G≠↔∀4Wβπ∨∃β	Me%bαBA↓α↓β'Mπ≠↔3↔∨#↔⊃β∞s⊃β;z↓β?SF+IαBπ→β↔cO≠Q9↓∧{S#↔∩↓αBC~βπK∀hS∂K↔∂#↔⊃β∂+S?7∂#'∂πfceβ←F+9βSF+eβπ⊗)βO↔f+∂S↔"β←'SBβS#∃¬αBN⊗b↓αVVz↓#O↔(h+↔f{]%8hP2BBLzQ↓↓α↓↓↓↓α↓↓αn⎇↓u]A∃h4)5ji555ji555ji555ji555ji555ji555ji555ji555ji555ji544R↓↓↓↓α↓↓αB∧J>Q↓f3W;∂&K?9yccπK∨.k↔;Qph(4(hRBB&⎇!β'Mε9β↔G#↔;∪.!αVVzβS#π"βWO↔~βS#∃∧

β≠N+3⊃β&yβ∪↔&+K7'v)β←#N≠!β?0h+O↔6+Kπ1πβπ∨∃αβCK'w#↔Iβ7+;∂SN{;M↓εKMβSz↓β∃ε+c↔∂/#↔⊃9α↓αS#*β';∪O3'∪W∞`4+≠.s∂S'}sMβπ⊗)β∪↔≡≠K'.!βO↔εKπS.ceβ.c?]8hP2BB≤*1↓↓α↓↓↓↓α↓↓αn⎇↓u]A∩aαε
kαu↓α¬α&>Qβ↓04)ji555ji555ji555ji555ji555ji555ji555ji555ji555ji554hQ↓↓↓α↓↓↓α¬αN⊗1βc≠3π;q-sCN+∂∃β}1βCπε+Iβ;ber>


The PPSEL UUO selects the piece of paper (PP) to which subsequent TTY
printing is to go.   All text output and  echoing will go to  that PP
until  another PP  is  selected.  The  PP's number,  which  should be
between  0 and  17 inclusive,  should appear  as the  UUO's effective
address except that the 400000  bit of the effective address  is used
as a flag for the UUO.  Unless the 400000 bit is on in  the effective
address, this UUO will activate the PP being selected  and deactivate
all others.  If the 400000 bit is on in the effective address, (e.g.,
PPSEL  400002),  then  no  change  will  be  made  in  the activation
condition of any PP.

If a piece  of paper is  selected that does  not exist, then  that PP
will  be  created  and  given the  default  size  (whole  screen) and
position (top of screen) for the type of display you are on;  see the
DPYSIZ and DPYPOS UUOs below to change the PP's size and position.  A
given PP (other than PP 0, which always exists) will not exist  if it
has not  been selected since  the last time  you executed a  RESET, a
DPYCLR UUO, or a PPREL of that PP (see PPREL below).
PPACT           [OP=702, AC=1]  PPIOT 1,
--------------------------------------------------
        PPACT <piece of paper activation map>


The PPACT  UUO is used  to display pap¬QSGkY¬d@Aa%KGKf↓←L@AACaKd8@A)Q∀~∃KM→KGiSYJ@AC⊃IeKgLA←L@↓iQJA%]gieUGiS←8@ASf↓S]iKIaeKi∃H@ACLAB@A	ShA[¬`~∃S9ISGCQS]NA]QSGP↓aSKG∃fA←L↓aCaKH@AC`⊗)βS=ε∪∃β∪O≠C3πN+⊃9↓∧	β?;*↓β'9ε∪'P4S	a.9π;'31αβ∂πW≡)αBAεsW7/⊃↓α9π#=β*↓β∪'∨β3πg.!9↓α&CWMβ⊗KQ↓↓A↓!Qβ↓AA@hS'QJβ?→β&C∃β↔63↔∂SO3∃βπ&#K↔O~β'Mβ6{IαBα↓A1β⊗KQ↓EJ↓!IAβ↓AAβ⊗KQ%β6{IαBh)E1ε+S
9α↓απ;JαBCMαβ∪↔π∨#'[π&+⊃β←Nc1↓β&KOπCε+πI↓F+cC3N≠'S3J↓β↔K∂≠↔⊃β}p4*∪∂#¬↓α&KO∂MKYβπ;J↓αBC~↓βK∃n∂S'6S↔⊃ε{9↓β
↓α&&Jβ←'3b↓βπCε+πI↓ε∪WQα¬βL4+⊗)7π∂&K[πS.!↓β?r↓β¬α&S¬↓∧#'O
αβ7WO"↓β∃ε3?K∂.!↓βSz↓β∃αβK↔∪⊗←9↓F3?H4VK;OS∞s∂∃1π;'S!βb⊗N
rαA%8hP2∩BMα>M↓α↓↓↓↓α↓↓αn⎇↓u]A∩aαε
k∩u↓α¬α&>Qβ⊃04)ji555ji555ji555ji555ji555ji555ji555ji555ji555ji554hQ↓↓↓α↓↓↓α%αfB>~↓re7ε{O'SN{9x4Ph(4*&C∃α∩¬JB>MααVV=ε≠πWO/→βS#*↓β∂W↔∪↔;SgIβO↔f+∂S↔"βC'↔≡)↓β?2βCπC/⊃↓βSzβ∀4Wβ?O'&K?;↔"β?9↓π##∃β≡≠K↔↔rβO=↓π##πQεKSMβ6KKOQαβ3';*β'Mβf{∂πS.!↓βπ"βS#∀hRe7C␈≠'S'}qβOC.≠'≠'.!↓βJβS#∃ε+≠≠↔∨#'[∃αβπ∪∪⊗+OMβ}1↓βSFKMβ'w≠SKW∨#'?9`h+←#/∪∃↓-↓AAβO→βS#*βS?Aε{→βSF)βO∂⊗+↔9β∞s⊃↓5↓AAβO→βS#*β?S&{584P2∩BM~&i↓α↓↓↓↓α↓↓αn⎇↓u]A∩aαε
k~u↓α¬α&>Qβ→04)ji555ji555ji555ji555ji555ji555ji555ji555ji555ji554hQ↓↓↓α↓↓↓α%αfN&R↓r≥)↓AA↓Zα1x4Ph(4*&C∃α∩¬JN&i¬*V=↓π≠↔SMπ#←=β63W↔~β≠?IαβS#∃ε≠WKK.sS3eπ≠↔3↔∨#↔⊃↓πβ'↔∂*β?_4WβπC↔∪QβS#*β;W7⊗+Iβ?2β∨3'&≠#↔MαB≥%β∞s⊃βSF)β;Wn∪↔Iβ}1β3'v+M↓βε+Iβ∨fKS∂ hQ"1%r↓α?&Aβ?→π##↔O*β;W7⊗+KMβ∂∪∃βO/!β≠K}iβS#*β↔≠≠.≠S'[*βπ∪∪⊗+OMβ}1βS#(h+';∨#KW∂&K?91∧9β≠K}iβ''→↓EaS⊃Y↓!αa1]];↓AAβ⊗KSM%ε;⊃αbβ≠K?jβ'S~↓I]i≠(4)!αa1]]:β'S~I9↓α&C∃β∂/∪K↔;"β∪↔≠∂+3Qβ63W↔~βπK∃Rβ?9αLJ'M1βiEIβ>c'S∂F+L4+}1↓IβfK;↔Mε+π∂!Zβ?9α&S¬α&KO∂Mb↓Qβ∨fKS∂#/→β?→βieβ3Ns↔Mβ.∂!8hP4*;␈9β¬β>{K⊃β∞∪?WQε;3'S≡C↔M9αα←#↔rβ¬βCN+∂∃β}1βCπε+Iβ≠Nc3Mβ/↓1↓β&C∃βS/CP4+Nqβ'QεSW7C~βWAβ&yβCK␈3'∪∃αβK??jβ≠?Iεk?K∃π#↔cQαCS#W~β7?[Ns≥↓β≡{7∃β&+cP4V{≠→β&C∃βS␈↓↓β?2βS#∃¬αA%9α↓αS#O→β+Woβ';≥π+A↓βO→β∂πfc↔⊃β
↓β∨3O#∂!9ααS#∀hS;W7⊗+Iβ?2β3';/→β'QεSW7C~β'Mβ&C∃β;.k↔Iε{→β3Ns↔Mβε+Iβ∨fKS∂!αB1%β∂→βO↔ h+eπ##∃βfOQ↓∧"BfNMQβ≠?∩βS#'~↓αBAε{IβJβS#∃αβ∪↔≠∂+3QβN1β;=αα∩Bf≤Jiβ#∂_4+.+9β∨O3↔99ααS#∃π#?Sπbβ;W7⊗+Iβ?2β3';/→β'9ε	αBAεKMα1T984(2BB∀*1↓↓α↓↓↓↓α↓↓αn⎇↓u]A∩aαε
k"u↓α¬α&>Qβ!04)ji555ji555ji555ji555ji555ji555ji555ji555ji555ji554hQ↓↓↓α↓↓↓α¬αJ⊗1βcC'↔≡)β?→πβπC↔∩β;W7⊗+Ix4Ph(4*&C∃↓α¬αJ⊗1ααVV=π∪↔3↔∂≠↔M↓π##∃↓πβ'↔∂*↓β?→πβπC↔∩↓β←#␈≠∃↓βw+7↔∩↓β'Mπ##∀4V+≠≠↔∨#'[∃αβπ∪∪⊗+OM↓ε{→↓β&C∃↓α-*=9↓ααC'↔≡)↓β?2↓βCπε+I↓βV+K=↓ε≠π;;␈!β∀hSK↔3.O↔⊃ZαBBJ,a↓AβO→β¬↓εs=7?αq↓αSF)βOg∨#↔5β∨#?Kπ>)βπO≡{∂'π&+⊃↓β>KS!βλh*BAε∪↔';:↓βK↔f+πO↔"β'Mβ7∪↔↔⊃Z↓βg?*β∂π;v{QβC␈≠O'gI↓β∨/!βπ≡Y↓βSF)βS↔G 4+SFQβ←∂→β?9αβ'Q9αα'→βN{UβK.c↔πO*↓βS#*β∂WK⊗+;S3JβO↔3.≠S↔⊃¬αA1↓ε	αBB≤*04)G≠↔∃β∞∪?[∃JβS=↓πβ'↔∂*β?→βεC↔IπS↔K=αβ'Mβ&{;∃9αα?9αLJ'M1αβK↔3.O↔⊃¬αCL4W;'31ε#'Oππβ↔πIph(2BBLr~=↓α↓↓↓↓α↓↓αn⎇↓u]A∩aαε
k*u↓α¬α&>Qβ)04)ji555ji555ji555ji555ji555ji555ji555ji555ji555ji554hQ↓↓↓α↓↓↓α¬α&:~zαε∩HhP4*ε%⊃i↓↓<block 24 words long for returned information>


The PPINFO UUO  gives you a 24-word  table of information  about your
page printer.  The effective address in the instruction  should point
to a 24-word block into which the table is to be placed.

The information returned  in the table  is indicap	∃HAEK1←nX@↓oQKe∀A! ~)[KC]LAaSK
JA←L↓aCaKH@AC]⊂A!∞A5KC]f↓aSKG∀@A←L↓OYCgL\@A)<AOKhAiQJ↓gC[J4∃S]M=e[Ci%←\AM=dAg←5JA←i!KdAU=DXAkMJAiQ∀A!!'A2A++<@QgK∀AaCO∀@bdp$\~∀~(@@@A]∨%	&A-β→U
~∀~(@@@@@@@@@@y!∨≤ACGi%mCiS=\AESQf|XXq! AC
iSmCQS←\A	Sif|4∀@@@@@@@@A)Q∃gJACIJAS\↓!∂βπP@AC]⊂A!!β
(AM←I[Cif8@A'K∀@AiQ∃gJAi]↑~∀@@@@@@@@AU+∨f\4∀~∀@@@b@@@@@q]k[E∃dA←L↓iQJA
keeK9iYrAMKYKGQKHA!@|~∀~(@@@@H@@@@A¬Sh`@Ph@````0X`AE%hRASL@bAS_AiQJ↓	CiB↓	SgF↓aCOJ↓G←Y←H~∀@@@@@@@@ASLAOeK∃\A←\↓EYCG,\~∀@@@@@@@@A	Sh@bPd``@``XX@AESh$@ASfb@AS_As←kH@AgGIKK\@↓QCfA	KK\~(@@@@@@@@AKeCMKHAEdAC\A∃gGCa∀@AG←5[C]H↓gS]G∀As←j↓YCghAOCm∀AiQSL~∀@@@@@@@@A+U≡\~∀@@@@@@@@↓¬Sh@H@Pb`@```X0`AESPRASfbASLAs←j↓CeJA=\AB@↓	CiB↓	SgF4∀@@@@@@@@AISMaYCr8~∀@@@@@@@@A¬%if@b`tfj@!iQJ@@XXnn\nnnA	SifR↓Q←YH↓s←kdAYS]∀AKISQ←d~∀@@@@@@@@↓2[a←MSiS←8@AS\A→3A∨&@A→←e[CP\@@AMKJ@AQQJ@A13!∨LA++≡4∀@@@@@@@@AEK1←n\~(~∀@@@ftdH@@@yd[a←g%iS←\xXXy∞T@b`@`@VA0|~∀@@@@@@@@AQQKeJ↓SfA←9JAo←IHAQKIJ@AM=dAKC
PA! lAS\A]←eH@L@ASf↓iQJ~(@@@@@@@@AgiCQkf@A→←d@@↓! @`0@Ao←IH@@h@AM←H@A! bX@@↓KiF\@A)Q∀~∀@@@@@@@@@yd[a←g%iS←\xASf@↓S\A	A3!∨&↓M←e[¬hX@A≤A[KC9f@A]U[EKd↓←L~∀@@@@@@@@↓OYSi
QKfXAC]HA_@A5KC]f↓YS]KL@AaKH@AOY%iGP\@A'K∀AiQJ4∀@@@@@@@@A	!e!∨&A¬]HA	A3'∪4↓++∨f↓CE←m∀\~∀~(@@@@Hf@@@A¬Sh@`@@ h```@`XX`AESh$@ASf@b@A%L@Ai!J@Ag%uJ@A=LAiQ∀~∀@@@@@@@@AGUeeK]QYrAg∃YKGi∃HA! ↓oCfA1CghAMKhAEdAWKs	←CeH↓G←[[¬]H~∀@@@@@@@@↓eCiQ∃dAiQ¬\AEr↓++≡\4∀@@@@@@@@A¬SP@b@PH````@XX`A	ShR@↓SfAi!JAgC5JAM←H@AiQ∀A2[a=gSiS=\~∀@@@@@@@@A=LAiQ∀AGkeIK]hAA \~∀@@@@@@@@↓¬Sh@H@Pb`@```X0`@AE%hRASLAiQJAgC[∀AM←d↓iQJ@↓YS]J↓Q←YH4∀@@@@@@@@AG←U]h\~(@@@@@@@@A¬Shf@Ph@```X0`AESPR@ASLAiQJ↓gC[J↓M←dAQQJ@A≥YSiG AQ←Y⊂~∀@@@@@@@@AG=k]h\4∀@@@@@@@@A¬SQf@@rhbn@P\nnXX@@AESQfR@A!CmJAQQJ@A¬GikC0@AYS9JAQ←1H~∀@@@@@@@@A
←k]h8~∀@@@@@@@@A¬%if@@DptdlP`XX\nn``@@AESQfRAQ¬mJ@AQQJ@A¬GikC0AOYSQGP~∀@@@@@@@@↓Q←YH↓G←k]P\~∀@@@@@@@@AiKe↑A%\@AK%iQKd↓←LAi!KgJ@↓Q←YH↓G←k]QfA[K¬]f@AQQChAQQCh~(@@@@@@@@AQ←Y⊂AG←k9hASf↓]←hA	KS]N↓kgKH8~∀@@@@@@@@A¬%if@d\tfj@ `XXn\nAESQfRAQ=YHAi!JAGQ¬eCGi∃d@QS9GYkI%]N~∀@@@@@@@@↓π∨≥)I∨_AC9H←←d↓≠)α↓ESif$AiQCPACGi%mCiK⊂AiQJ↓YCgh↓YS]J4∀@@@@@@@@AeJ5KISi∃HAoSQPABA
∨≥)%=_[π$↓←dAo%iPAB↓!)→∨¬λ@A+U≡@Qg∃J~∀@@@@@@@@AACOJ@DbfR\4∀→→3A∨&@@@@@@@A7∨@zn`d0AβεzY:@A!A∪∨(@XX~∀Z4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZ~(@@@@@@A→∃3!∨&y2[a=gSiS=\AM←HAYS]∀AKISQ←d|~(~∀~∃QQJ@A13!∨LA++≡AgKiL@AiQ∀A2[a=gSiS=\@A←_@As←UdAYS9J@AK⊃Si←dAi↑AQQCh~)gaKG%MSKHAEr@↓iQJA∃MMKGQSmJ@↓CIIe∃gf@A=LAiQ∀@AS]MiekGQS←\XAoQS
PASf4∃S]i∃eaeKQKH@A%\@A	A3!∨&↓M←e[¬h@@P,b```ASfAQ←`@A=L@Ag
eKK\0@@Zb@``ASL~∃E←Qi←ZR8@Aα@↓2[a←MSiS←8A←LAiKe↑@↓I←Kf↓≥∨(A5KC\@↓i↑Aa=gSiS=\@Ai!JAYS9J~∃K⊃Si←d↓ChAi!JA[S⊃IYJA=L@Ai!JAgGIKK\X↓EkhA%]giK¬HA[K¬]fAi<@AeKQke\AQQJ~∃1S]JA∃ISi←H@Ai↑↓SifA9←e[C0@AY←
CiS←8AChAQQJ@A	←ii←4A←L@↓iQJA
keeK9iYr~)gKYK
iKHAASKGJA←LAACaKd8@@A)!SfA+U≡ACY]Csf@↓gKif↓s←kdAYS]∀AKISQ←dOf4∃0[a=gSiS=\Ai↑↓iQJ@↓YKMh↓[CeO%\A←L↓iQJ@↓ISga1CrAg
eKK\↓k]YKMf@As=jACe∀~∃]←I[CYSiS]NAQQJAY%]J@A∃ISi←HOfA25a←gSQS←\A	rAga∃GSMs%]N@A∧A2[a=gSiS=\~∃←_AuKe<\~∀→!!⊃1λ@@@@@@@@A7∨@zn`d0Aβεz]:@A!A∪∨(@\X~∀Z4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZ~(@@@@@@A!A⊃→λ@q→⊃εTD```@,A∂⊃εx~∀~∀4∃)QJ↓!!⊃→⊂@A++<AgKiL@AiQ∀AYS]∀AQ←Y⊂@AG←U]h@Q1⊃εR@↓C]HAQQJ@A≥YSiG AQ←Y⊂~∃G←U]h@Q≥⊃εRA→←d@Ae←kdAACOJAAeS]i∃d\@@↓)QKg∀Aio↑↓]k[E∃ef@A%]ISG¬iJAQ=n~∃[¬]rAY%]KfA=dAOY%iGQKLAiQJAgsgQKZAg!←kYH↓CYY←\Ai↑A	J@AaIS]iK⊂AEKM=eJ~∃¬ki←[¬iSGC1YrAQ=YIS]≤AiQJ↓isaK=khAM=dAs←UdAISMaYCr8@A¬←QPAiQ∀A→⊃ε↓C]H~)iQJA≥⊃εACIJAgKPAMe←4AiQJ↓KMMK
iSmJ↓CIIe∃gfA←_AiQJ↓++≡X↓→⊃ε@↓Me←Z↓ESif4∀bptHl@Qi!J@`X0nnn`@`AESQfRAC9HA∂⊃AMe←4AESiL@dntLj@Qi!J@`X0nnnA	SifR8~∃∪LAiQJAQSO @A←e⊃Kd@A	Sh@A=L@AK%iQKdA←L@↓iQKg∀@AMS∃YIf@↓Sf@A=\XAi!J~∃G=eeKgA←]IS9N@AQ=YHAG=k]h@↓SfA≥=(@Aπ!β≥∂⊂\@AαAuKe<AS\@↓KSiQ∃dAMS∃YH~∃⊃SgCE1KfAi!ChAa¬eiSGUYCdAQsaJA=LACkQ←[Ci%FAQ←1IS]N8~∀→!!'A2@@@@@@@@A7∨@z`hn0Aβ	$th``b@o:@A
β→→∩h``b@n~∀Z4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZ~(@@@@@@A≠=-
@@↓βεY6qU←DA9k[EKHA←d@5iirA9k[EKH|XYβ⊃%:~∀@@@@@A!!M!2AβX~∀@@@@@@yKeI←dAe∃ike\x~∀~∃¬	$t@@@xdP[o←e⊂AEY←
VAM←HAeKiUe]KH↓S]M←I[CiS=\|~∀4∀~∃)!JA!!M!2A+U≡AeKQke]f↓B@@dP[o←e⊂AEY←
VA←L↓S]M←I[CiS=\ACE=kh@AQQJAa¬OJ~∃AeS]i∃dA←L↓B@AgAKGSM%FAU←λA←d@↓ISga1Cr\@↓)QJA%]M←e5CiS←8@AeKQke]K⊂ASf~)KqCGQYrAi!JAgC5JACf↓iQChAeKiUe]KH↓ErAi!JA!!%≥
≡AU+≡@QMKJ@AACOJ@DdjR\4∃)QJ↓eSOQPAQCY_A←LA¬εAgQ=kYHA
←]iC%\AiQ∀ACIIIKgfA=LAiQ∀@@dh5o←eH↓EY←G,~∃oQ∃eJAs=jAoC9hAiQ∀AS]M=e[Ci%←\Ae∃ike]∃H\@AQQJAY∃MhAQ¬YLA←_@Aβε↓gQ←k1H~∃G=]iCS8AKSi!KdAi!JA]k5EKdA=LAiQ∀AU←D↓←dAi!JA]K≥CiSm∀A←LAQQJA]U[EKd↓←L~∃QQJAI%gaYCdAM←d↓oQSG As←j↓oC]h↓iQJAACOJAAeS]i∃dAS]→←e[CQS←\\A∪LAQQSf~UUO is  successful, the skip  return is taken.   If AC  left contains
zero, or if there is no  job with the job number given or  no display
with the negative TTY number given, then the direct (error) return is
taken.
                    4.4  Running Display Programs


This section describes the UUOs  that allow the user to have  his own
display programs run on the III and Data Disc display processors.
UPGIOT          [OP=703]
--------------------------------------------------
        UPGIOT <piece of glass number>,ADR

ADR:    <flags>,,<address of display program>
        <length of display program in words>
        <transfer-in-progress flag, if bit 0 in ADR is on>
        <address of low order line command, if bit 1 in ADR is on>


The UPGIOT UUO (also known as DPYOUT) causes a display program  to be
run.  If you are on a Data Disc, the program is assumed to be  a Data
Disc  display  program and  thus  is  run on  the  Data  Disc display
processor.  If you are on a  III terminal, the program is run  on the
III display processor.  If  you are on a pseudo-teletype  (PTY) which
is owned either directly or  indirectly (that is, through a  chain of
PTYs) by a job running on a display, then the program is run  on that
display, whether it be III or Data Disc.

If the display  program is to be  run on a III,  the AC field  of the
instruction indicates which piece of  glass the program is to  be run
as.  If the program is intended for a Data Disc display, the AC field
is ignored.

The address field of  this UUO points to  a data block, of  which the
first word contains the address of the display program that is  to be
run and the second word contains the program's length in words.

For Data Disc programs there are some other optional parameters which
you may specify.  If bit 0 (400000,,0 bit) of the word at ADR  is on,
then the display program is  run in overlapped mode.  This  means the
UUO will return  without waiting for  the display program  to finish.
(However, it will  wait for any previous  DD program to  finish.)  In
this mode  the word  at ADR+2 is  set non-zero  while the  program is
being sent to the  DD processor and is  set to zero when  the program
has finished.  Thus you can test to see if the program has completed;
you should not change any part of the display program until ADR+2 has
been set to zero.  Also, if you indicate a DD program length  of zero
in ADR+1, no program will be run at all, but the UUO will  not return
until any previous DD program has finished.

If bit 1 (200000,,0 bit) at ADR is on, the display program is  run in
double field mode.   This is useful for  writing text on a  Data Disc
channel.  Normally you have to  send text to the DD  processor twice,
once for  each of the  two tracks  that make up  the DD  channel.  In
these two passes, you would indicate two line addresses that  are the
same except in the low order bit position.  In double field mode, the
system sends the program to the DD processor twice, once with the low
order bit of the line address select set to zero and once with it set
to one.   The original value  of this  bit when you  give the  UUO is
irrelevant and its  final value is  unspecified.  The low  order line
address select must occur as the third command in the word pointed to
by ADR+3.  This feature will not work properly if you have  more than
one line address select in your DD program.

For details on the format  of a display program, see Section  4.1 for
IIIs  and  Section  4.2  for Data  Discs.   For  descriptions  of the
instructions for  the two  display processors,  see Section  14.2 and
Section 14.3.
PGIOT           [OP=715]
--------------------------------------------------
        PGIOT <function>,<argument>


The PGIOT UUO is an extended UUO that uses the AC field  to determine
which of several display functions is to be executed.  The individual
functions  are  described  separately below.   Of  these,  the PGSEL,
PGACT, and  PGCLR UUOs are  meaningful only for  IIIs and  are no-ops
when given on Data Discs.
PGSEL           [OP=715, AC=0]  PGIOT 0,
--------------------------------------------------
        PGSEL <piece of glass number>


The PGSEL UUO causes the piece of glass whose number is the effective
address of the  UUO to be selected.   This means that the  UPGMVM and
UPGMVE UUOs (see  page 137) will refer  to this piece of  glass until
the next PGSEL is given.
PGACT           [OP=715, AC=1]  PGIOT 1,
--------------------------------------------------
        PGACT <piece of glass activation map>


The PGACT  UUO is  used to  select which  pieces of  glass are  to be
displayed.  The effective address of this UUO is interpreted as a bit
map; a  one in  bit 18+P  will cause piece  of glass  number P  to be
displayed, and a zero will cause that piece of glass to be invisible.
PGCLR           [OP=715, AC=2]  PGIOT 2,
--------------------------------------------------
        PGCLR


The PGCLR UUO causes all of your pieces of glass to be cleared.  This
means that the system free  storage that was allocated for  these PGs
is freed and  whatever was displayed by  them disappears never  to be
seen again.  This UUO does not affect your page printer at all.
DDUPG           [OP=715, AC=3]  PGIOT 3,
--------------------------------------------------
        DDUPG ADR

ADR:    <flags>,,<address of display program>
        <length of display program in words>
        <transfer-in-progress flag, if bit 0 in ADR is on>
        <address of low order line command, if bit 1 in ADR is on>


The DDUPG UUO  causes a user's Data  Disc display program to  be run.
This UUO works just like UPGIOT except that the program is always run
on the Data Disc display  processor.  See the UPGIOT UUO on  page 130
for an explanation of the various options.

This UUO is especially useful if you are not on a Data Disc  and want
to  run a  Data Disc  display program  (for example,  on a  Data Disc
channel you have acquired using the DDCHAN UUO--see page 141).
PGINFO          [OP=715, AC=4]  PGIOT 4,
--------------------------------------------------
        PGINFO ADR

ADR:    <block 21 words long for returned information>


The PGINFO  UUO returns  a 21  word table  of information  about your
pieces of  glass.  The  effective address  of the  instruction should
specify the  location of a  21 word  block where the  table is  to be
stored.  The  information returned in  the table is  indicated below.
If  you are  on a  Data Disc,  only the  first word  of the  table is
relevant; the remainder are returned as zero.


    WORDS  VALUE

    0      <POG activation bits>,,<PP activation bits>
           These are in PGACT and PPACT formats respectively; see
           these two UUOs.

    1:20   <word count>,,<starting address>
           There is one word here for each piece of glass.
UPGMVM          [OP=714]
--------------------------------------------------
        UPGMVM AC,ADR


The UPGMVM UUO is used  to update a III display program.   Before you
give this UUO,  you must have selected  some piece of glass  with the
PGSEL UUO.  This  UUO is then used  to update the display  program of
that piece of glass by replacing the word that would have been at ADR
in that program with the  word in the specified AC.  In  other words,
you could  update your  display program by  doing a  MOVEM AC,ADR and
then another UPGIOT, or  you can give this  UUO with the same  AC and
ADR specified.   This causes  a change  to one  word of  your display
program,  which is  already running  (unless deactivated  by  a PGACT
UUO).  The  address ADR must  be within the  bounds of the  core area
that contained  the display  program when you  created this  piece of
glass with the UPGIOT UUO.
UPGMVE          [OP=713]
--------------------------------------------------
        UPGMVE AC,ADR


The UPGMVE UUO is the MOVE analog of the UPGMVM UUO  described above.
This UUO picks up a word from the currently selected  display program
and returns it in the specified AC.
DPYCLR          [OP=701]
--------------------------------------------------
        DPYCLR <flag>,ADR

ADR:    <job name or number, if <flag> is non-zero>


The DPYCLR  UUO resets your  display to its  initial state if  the AC
field of the UUO (<flag>  above) is zero.  This means that  your page
printer is  normalized by  releasing and  deactivating all  pieces of
paper except number  zero, which is  selected and activated  with its
position and size  normalized.  The position  of your line  editor is
reset to normal, and any III display programs running are killed.

On a III, all pieces of glass  and all pieces of paper but PP  0 will
disappear.  On a  Data Disc, however,  nothing is erased  except that
which is  overwritten by  the newly redrawn  page printer.   To erase
pieces of  paper on  a Data  Disc, deactivate  them while  they still
exist (this UUO releases all but PP 0).  The RESET UUO (see page 250)
also normalizes your display like DPYCLR.

If you do a "DPYCLR 0," after having done a DPYCLR with a non-zero AC
field (see next  paragraph), then your  display's state is  reset and
the mapping effect for display output is undone.

If the  AC field  (<flag> above) of  this UUO  is non-zero,  then the
address field of the UUO should point to a word containing either the
name or  number of a  job running  on a display.   In this  case, all
subsequent display output done by  your job will be displayed  on the
specified job's terminal just as  if he himself had done  the display
output UUOs.   To undo this  effect, execute a  DPYCLR 0, or  a RESET
UUO, both of which will also reset your display's state  as described
above.
                    4.5  Extra Data Disc Channels


The DDCHAN UUO is provided to allow users to acquire extra  Data Disc
channels for use in displaying text and graphics.
DDCHAN          [OP=047, ADR=400067]  CALLI 400067
--------------------------------------------------
        MOVE   AC,[<channel request>]
        DDCHAN AC,
        <error return - for get channel and set status only>


The DDCHAN UUO is used to get and release DD channels and to  get and
set  the status  of DD  channels.  This  UUO should  be given  with a
channel request in the  specified AC; this request is  interpreted as
follows.

    BITS   OCTAL         MEANINGS OF BITS IN A DATA  DISC CHANNEL
                         REQUEST

    28:29  0,,300        Operation.
                         0 = release channel     2 = get status
                         1 = get channel         3 = set status
                         A GET CHANNEL will fail if the requested
                         channel  is unavailable.   A  SET STATUS
                         will fail if the channel  doesn't belong
                         to  you.   These  two  commands  skip on
                         success; otherwise, the direct return is
                         taken.

    30:35  0,,77         Channel  number.   Values  0  through 37
                         specify a  particular DD channel.   In a
                         GET  CHANNEL   request,  the   value  77
                         specifies ANY CHANNEL.  In a  GET STATUS
                         or  SET  STATUS,  77  means   your  main
                         channel.   In  a  RELEASE   CHANNEL,  77
                         releases  all channels  assigned  to the
                         job.   Other  values  for   the  channel
                         number are undefined.

    0      400000,,0     Privacy flag.  A  one in this  bit means
                         no one else can look at this channel.

    1      200000,,0     Write  permission.   A one  in  this bit
                         means that other jobs may write  on this
                         channel.

After execution of this UUO  (except for a RELEASE ALL CHANNELS  or a
GET ANY CHANNEL failure), the  AC contains the channel number  in the
right half, the privacy and write permission status in bits 0  and 1,
plus the CHANNEL USE in bits 10:17 (377,,0 bits).  A value of zero in
this use field means the channel  is free; 1 through 77 mean  that it
is an  extra channel belonging  to that job  number; 100  through 177
mean that it is the main channel for the TTY line whose number  is 52
less than  this number; 200  means the channel  is being used  by the
system to  advertise available consoles  (or to display  other system
messages);  201  means  the  channel  is  detached  from  the  system
(probably because it  is a lousy channel,  e.g., streaks a  lot); 202
through 377 are reserved for future use.

The RESET UUO (see page 250) releases all of your extra DD channels.

EXAMPLE: To request  a private channel that  only your job  can write
on.

        MOVE   AC,[400000,,177]
        DDCHAN AC,
        JRST   LOSE
WIN:    ...

If you get to WIN, the channel number will be in the right half of AC
and the left half will have  the sign bit on with your job  number in
bits 10:17.
                        4.6  The Video Switch


The Video Switch  is the device  that determines which  pictures will
appear on which TV monitors (Data Disc displays).  Available to these
displays are =32 Data Disc (DD) channels (numbered 0 to 37  octal), a
null channel (numbered 40),  and 7 television channels,  (numbered 41
to 47).

Each TV monitor  is controlled by a  36-bit map that  specifies which
channels are connected to that monitor.  This map is explained below.

    BITS   OCTAL         MEANINGS OF BITS IN A DATA  DISC DISPLAY
                         CHANNEL MAP

    0:31   777777,,777760DD channels.  A one in bit N  means that
                         DD  channel  N  is  connected   to  this
                         monitor.

    33:35  0,,7          Low order 3  bits of TV  channel number,
                         as indicated below.  The following (0 to
                         7) represent the TV channels 40:47.
                         0 Null channel.    4 Cart receiver.
                         1 Cohu camera.     5 Lounge TV.
                         2 Sierra camera.   6 Color synthesizer.
                         3 Kintel camera.   7 Video synthesizer.

    32     0,,10         Asynchronous flag.   A zero in  this bit
                         causes  DD sync  to be  inserted;  a one
                         blocks  DD  sync  and  all  DD channels.
                         Whenever    bits   33:35    specify   an
                         asynchronous    source,    the    system
                         automatically sets this bit to  one.  TV
                         channels   41   through   46   are   all
                         asynchronous and cannot be  viewed along
                         with DD channels.

EXAMPLE: A  map containing  "200000,,7" selects DD  channel 1  and TV
channel 47.



The following UUO has been  added to permit user programs to  set the
maps for particular TV monitors.
VDSMAP          [OP=047, ADR=400070]  CALLI 400070
--------------------------------------------------
        MOVE   AC,[<video switch request>,,ADR]
        VDSMAP AC,
        <error return for operations 1:4>

ADR:    <Data Disc display channel map>


The VDSMAP UUO is used  to change and/or retrieve one of  the channel
maps for a Data Disc display line.  AC left specifies, in the form of
a video switch  request, the type of  operation to be carried  out by
this UUO; the fields of  a video switch request are explained  in the
table below.  All the operations except GET MAP and GET LINE  TIED TO
take  the  skip return  on  complete success  and  the  direct return
otherwise; GET MAP (operation 0)  and GET LINE TIED TO  (operation 5)
always takes the direct return.  For operations 1, 2 and 3  (SET MAP,
ADD  CHANNELS and  DELETE  CHANNELS), AC  right should  point  to the
channel map to be used  in the operation; channel maps  are described
above.  For operations 0, 1, 2, 3 and 4, a channel map is returned in
AC; the particular map  returned depends on the video  switch request
given, as explained below.  If you  specify a TTY line that is  not a
Data Disc display line, -1 is returned in AC.

For each Data Disc display  line, the system keeps two  channel maps,
which are  called the PERMANENT  MAP and the  TEMPORARY MAP;  and for
each actual TV monitor the system keeps an additional map  called the
UNTIED MAP.  Normally, each TV  monitor is tied to some  display line
and sees that line's temporary map (unless the line is not in use, in
which case the TV monitor  sees the line's permanent map); when  a TV
monitor is  tied to  a display line,  it is  affected by  any channel
mapping done by  the program running on  that line.  However,  the TV
monitor can  be untied  from the  display line  (for example,  by the
keyboard command ESC n S), in which case its untied map is displayed.
Any number of TV  monitors can be tied  to a given Data  Disc display
line and any  changes to that  display line's permanent  or temporary
map will be seen on all TV monitors tied there.  However,  the untied
map  for a  given TV  monitor  is displayed  only on  that  actual TV
monitor, and then only if the  TV monitor is not tied to  any display
line.

    BITS   OCTAL         MEANINGS  OF  BITS  IN  A  VIDEO  SWITCH
                         REQUEST

    11:17  177,,0        Number  of  the Data  Disc  display line
                         whose map is to be changed or retrieved,
                         where zero  means your own  line.  Other
                         lines  associated with  TV  monitors (26
                         through 117) may have their maps changed
                         (operations  1:4) only  if they  have no
                         job   logged   in   (or   if   you   are
                         privileged).

    9      400,,0        Shadow  line map.   If this  bit  is on,
                         then the  UUO will refer  to one  of the
                         six  unused TV  lines rather  than  to a
                         normal  Data Disc  line.  The  number in
                         bits 11:17  should be  in the  range 0:5
                         and  specifies  which one  of  these six
                         lines is to be mapped or examined.

    0      400000,,0     Temporary/permanent flag.  For a SET MAP
                         operation, an ADD CHANNELS operation, or
                         a  DELETE CHANNELS  operation (operation
                         1, 2  or 3),  the operation  will affect
                         only the temporary map if this bit  is 0
                         and  both  the  permanent  and temporary
                         maps if this  bit is 1.   For operations
                         0, 1,  2, 3 and  4 (with bit  1 off--see
                         below), the map returned in the  AC will
                         be the  temporary map if  this bit  is 0
                         and the permanent map if this bit  is 1.
                         For a RESET MAP operation (operation 4),
                         this bit determines which kind  of reset
                         is  done;  see the  reset  map operation
                         below.  Operation  5 (GET LINE  TIED TO)
                         ignores this bit.  An attempt  to change
                         just the temporary map (this bit off) of
                         a shadow  line or of  a line not  in use
                         will  be   a  no-op,  taking   the  skip
                         (success)  return;  such  lines  have no
                         temporary map.

    1      200000,,0     Affect  untied map.   This bit  being on
                         causes  operations  0,  1,  2  and  3 to
                         affect a TV monitor's untied map instead
                         of  a  line's  temporary  and  permanent
                         maps.  Operations 4 and 5 (RESET MAP and
                         GET LINE TIED TO) ignore this bit.  This
                         bit is also ignored if you are mapping a
                         shadow line (bit 9 on--see above).  When
                         this bit is on for operation 0, 1,  2 or
                         3, the map  returned in AC will  be that
                         which is actually being displayed on the
                         TV  monitor  specifed:  untied   map  if
                         untied,  permanent  map if  not  in use,
                         else temporary map.  The channel mapping
                         operations (1, 2 and 3) with this bit on
                         are   privileged   (requiring   the  UPG
                         privilege); these operations  will untie
                         the  TV monitor  if it  is tied  to some
                         line (copying the temporary map into the
                         untied  map  before  carrying   out  the
                         operation),   and  if   bit  0   if  off
                         (temporary mode) a  flag will be  set so
                         that  the next  RESET MAP  (operation 4)
                         will  tie  the TV  monitor  back  to the
                         display    line   to    which    it   is
                         keyboard-mapped.

    6:8    7000,,0       Operation.
                          0 = GET MAP.  The temporary, permanent,
                              or    untied   channel    map   (as
                              determined  by  bits  0  and 1--see
                              above)  of  the  indicated  line is
                              returned in the AC, and  the direct
                              return (no skip) is always taken.
                          1 = SET   MAP.    The   indicated  maps
                              (temporary,      temporary      and
                              permanent, or untied,  according to
                              bits 0  and 1  above) are  set from
                              the  word at  ADR.   This operation
                              skips if it is entirely successful.
                          2 = ADD CHANNELS.  Bits 0:31 of the map
                              at   ADR   are   "or"ed   into  the
                              indicated maps.   If bits  33:35 of
                              the map  at ADR  are not  all zero,
                              they replace the corresponding bits
                              in   the   indicated   maps.    The
                              resultant  map  is  set   into  the
                              temporary, permanent or untied maps
                              according  to bits  0 and  1 above.
                              This  operation  skips  on complete
                              success.
                          3 = DELETE  CHANNELS.   The complements
                              of bits 0:31 of the map at  ADR are
                              "and"ed with  the current  map.  If
                              bits 33:35  of the  map at  ADR are
                              not all zero, this field is cleared
                              to zero (which selects the  null TV
                              channel) in the resultant map.  The
                              resultant  map  is  set   into  the
                              temporary, permanent or untied maps
                              according  to bits  0 and  1 above.
                              This operation  can fail only  on a
                              busy  line  number.   It  skips  on
                              success.
                          4 = RESET     MAP.      If     bit    0
                              (temporary/permanent flag)  is off,
                              the temporary  map is reset  to the
                              permanent one.  If bit 0 is on, the
                              permanent  and  temporary  maps are
                              both  reset  to  the   line's  main
                              channel alone.  This  operation can
                              fail  only on  a busy  line number.
                              It skips on success.  The RESET UUO
                              also  resets the  temporary  map to
                              the permanent map.
                          5 = GET  LINE TIED  TO.   This function
                              simply   returns  in   AC   a  word
                              indicating  the  tied/untied status
                              of the TV monitor indicated in bits
                              9, 11:17.   The returned  word will
                              be: 0 if the TV monitor  is untied;
                              400000,,0  if  the  TV  monitor  is
                              untied but a RESET MAP will  tie it
                              back to  the display line  to which
                              it is keyboard-mapped; or  the line
                              number the TV monitor is tied to if
                              not untied.  This operation ignores
                              bits 0 and 1 and will return a 0 if
                              bit 9 (shadow line) is on.
                         6:7= Undefined.

An attempt to map someone else's private channel to another's display
will fail, even if  you are privileged.  However, each  channel being
mapped  is  considered  separately,  and  a  mapping   operation  may
successfully  map  some channels  while  failing on  others.   If the
mapping operation fails  on at least one  channel, then the  UUO will
take the error return.   Also, unless you are privileged,  you cannot
change the map of someone else's display; nevertheless, a job running
on a PTY can change the map of the display of the job owning  the PTY
(possibly through a chain of PTYs).

EXAMPLE: To temporarily display  Data Disc channel 21 and  TV channel
47 on your line.
        MOVE   AC,[1000,,[1,,7]]
        VDSMAP AC,
        JRST   LOSE
WIN:    ...

EXAMPLE: To get the temporary map of TTY line 26.
        MOVSI  AC,26
        VDSMAP AC,
        ...

The map would be returned in AC.
                        4.7  The Audio Switch


Associated  with  each  display  is an  audio  speaker  which  can be
connected to any one of  several sound sources.  The ADSMAP  UUO (see
below)  is used  to choose  the  sound source  to be  heard  over the
speaker at a  program's attached terminal.  The  BEEP UUO is  used to
send a short beep to any display's speaker.

Each sound  source that can  be connected to  a display's  speaker is
assigned  an  audio  channel  number.   The  current  assignments  of
channels to sources is as follows:

    CHANNEL       SOUND SOURCE

      0           Laboratory personnel paging system.
      1           Lounge TV audio.
      2           RPH tuner.
      3           Tuner in computer room.
      4           AD D-to-A output converter, channel 1.
      5           A continuous beeping--used by the BEEP UUO.
      6           AM tuner.
      7           BH tuner.
      10          Voder output.
      11          (unconnected)
      12          (unconnected)
      13          SGK tuner.
      14          (unconnected)
      15          (unconnected)
      16          HPM TV audio.
      17          KSAN.

To  connect a  speaker  to a  sound  source, the  user  specifies the
source's channel number.  A speaker cannot be connected to  more than
one source.

Each  display has  both  a PERMANENT  audio switch  connection  and a
TEMPORARY  connection.   When  a temporary  connection  is  made, its
duration  (possibly infinite)  must be  specified; when  the duration
runs out,  the permanent connection  is reselected  automatically.  A
RESET (see page 250) will also reselect the permanent connection.

The system  allows a user  to send  a beep to  a display  terminal in
order to attract the attention of that display's user.  Since  a beep
may interrupt something a user is listening to, the user is permitted
to  inhibit  beeping  on  his  display's  speaker.   Furthermore, the
personnel paging system  of the laboratory  uses the audio  switch to
make paging announcements over  users' speakers, and these  pages may
also interrupt  a user's selected  sound source.  Thus  the following
system has been  implemented to allow each  user to decide  what will
interrupt his audio switch connections.

Four   possible   dispositions  are   allowed   for   handling  audio
interruptions;  for each  connection, one  of these  is  selected for
paging interruptions and one for beep interruptions:

    INTERRUPT
    DON'T INTERRUPT
    INTERRUPT WITH EXTENDED DURATION
    DELAY BEEP

INTERRUPT means that if  an interruption comes along,  the connection
will be momentarily changed until the beep or page ends.

DON'T INTERRUPT  means ignore  all interruptions;  no change  will be
made even momentarily to the audio switch connection.

INTERRUPT WITH  EXTENDED DURATION means  allow interruptions  to take
place but extend the duration of the connection.  This  is meaningful
only for temporary connections.

DELAY BEEP means postpone any beep interruption until  the expiration
of the connection.  This again applies only to temporary connections,
and further is not a defined disposition for paging interruptions.
ADSMAP          [OP=047, ADR=400110]  CALLI 400110
--------------------------------------------------
        MOVE   AC,[<audio switch connection>]
        ADSMAP AC,


The  ADSMAP UUO  is used  to  connect a  specific sound  source  to a
display's speaker  or to  find out  the status  of a  display's audio
switch connection.   The job giving  this UUO must  be attached  to a
display terminal for this UUO to do anything; also it is not possible
for a job to affect  the audio switch connection for any  display but
its own.

If  AC contains  -1,  the audio  switch  connection is  reset  to the
current permanent connection.   Otherwise, the value in  AC specifies
either the  temporary or permanent  connection and  indicates whether
that connection is to be  changed or just its status returned.   If a
temporary connection is to be made, the duration of the new temporary
connection must be given in  the right half of the AC;  this duration
is in units of 1/4 second.  The various fields of AC  are interpreted
as follows:

    BITS   OCTAL         MEANINGS  OF  AUDIO   SWITCH  CONNECTION
                         FIELDS

    0      400000,,0     Temporary/permanent flag.   A 0  in this
                         bit specifies the permanent audio switch
                         connection;  a  1  means  the  temporary
                         connection.

    1      200000,,0     Set/get  flag.  If  this bit  is  0, the
                         connection indicated  by bit 0  will not
                         be changed;  the connection  status will
                         simply  be returned  in AC  (with  bit 0
                         unchanged,  bits  1:4  zero,  bits  5:17
                         containing the data indicated below, and
                         bits 18:35 containing the time remaining
                         in any temporary  connection's duration,
                         or  0  for  infinite,  even  if  getting
                         permanent  connection status).   A  1 in
                         this bit means  the connection is  to be
                         changed.

    2:3    140000,,0     Action  taken  if  there  is  a  current
                         temporary  connection  (applies  only if
                         setting new connection):
                         0  Wait   for   any    existing   finite
                            temporary  connection to  expire.  An
                            infinite   temporary   connection  in
                            progress will be flushed.
                         1  If making a temporary  connection and
                            there is  already a  finite temporary
                            connection,    don't    change    the
                            connection; if  there is  an infinite
                            temporary  connection, it  is flushed
                            and the  new connection is  made.  If
                            making  a permanent  connection, same
                            as 2 below.
                         2  Make  this connection  now regardless
                            of   former   status.    Any  current
                            temporary   connection   is   flushed
                            immediately.
                         3  Same as 2.

    4      20000,,0      Return-immediately flag.  If this bit is
                         0 and  a finite temporary  connection is
                         to  be  made, the  UUO  will  not return
                         until the  new connection expires.   A 1
                         in  this   bit  makes  the   UUO  return
                         immediately, possibly after  waiting for
                         an    old   temporary    connection   to
                         expire--see bits 2:3 above.

    5:6    14000,,0      Paging disposition (bit 5 is ignored for
                         a permanent connection):
                         0  Interrupt.
                         1  Don't interrupt.
                         2  Interrupt  and extend  duration (only
                            for temporary connection).
                         3  Same as 1.

    7:8    3000,,0       Beep disposition (bit 7 is ignored for a
                         permanent connection):
                         0  Interrupt.
                         1  Don't interrupt.
                         2  Interrupt  and extend  duration (only
                            for temporary connection).
                         3  Delay   beep   (only   for  temporary
                            connection).

    14:17  17,,0         Audio switch channel.

    18:35  0,,777777     Duration in 1/4  second units, or  0 for
                         infinite (temporary connections only).

    9:13   760,,0        The original contents of this  field are
                         ignored,  but  if bit  1  is  0 (getting
                         status), these  bits are used  to return
                         the following status information:

    9      400,,0        Temporary  connection active.   This bit
                         will  be  a  1  if  you  have  a current
                         temporary   connection.   This   bit  is
                         returned  whether  you  are  getting the
                         status of a temporary connection or of a
                         permanent   connection.    If   you  are
                         getting the temporary  connection status
                         and  this  bit  is  returned  as  0  (no
                         temporary  connection),  then  only bits
                         9:12    (740,,0   bits)    will   return
                         significant data.

    10     200,,0        Page in  progress.  This  bit will  be 1
                         whenever a paging announcement  is being
                         made,  whether  or not  your  display is
                         allowing page interruptions.

    11     100,,0        Paging  interruption in  progress.  This
                         bit   will  be   1  whenever   a  paging
                         announcement is in progress and  you are
                         enabled for page interruptions.

    12     40,,0         Beep interruption in progress.  This bit
                         will be 1  whenever a beep  is happening
                         on your display.

    13     20,,0         Delayed beep pending.  This bit  will be
                         1 if you have selected the  delayed beep
                         disposition   and   there   is   a  beep
                         interruption waiting for  the expiration
                         of your temporary selection.
BEEP            [OP=047, ADR=400111]  CALLI 400111
--------------------------------------------------
        MOVE AC,[<TTY line number, or -1 for self>]
        BEEP AC,


The  BEEP  UUO causes  a  beep interruption  for  a  specific display
terminal.  The AC should contain the display's line number, or  -1 to
beep your own display.  The  beep may happen at once, be  delayed, or
be  ignored altogether,  depending  on the  recipient's  audio switch
connection status.  This UUO returns  at once in any case,  giving no
indication of what happened.

If the terminal being beeped is not a display, a control-G  (bell) is
sent to the terminal instead of the beep.
                     SECTION 5--UPPER SEGMENTS


Programs may be split  into two discontiguous parts.  The  first part
goes from user address zero to an address called the job's protection
constant.  This address, whose low order 10 bits are always  1777, is
contained in the  word at JOBREL in  the job data area  (see Appendix
2).  The  second part, if  it exists, starts  at user  address 400000
and goes  up to  the program's second  protection constant,  which is
kept in the right half of  JOBHRL in the job data area.   This second
part  of a  program, when  it exists,  is called  the  UPPER SEGMENT,
SECOND  SEGMENT or  HIGH  SEGMENT of  that  job.  The  first  part is
usually  called the  LOWER SEGMENT  and is  the controlling  job.  An
upper segment  cannot execute  code except when  attached to  a lower
segment.

An upper segment  can be shared by  several jobs; this saves  core by
eliminating all but one copy of the same piece of code.   However, it
uses  up an  extra job  slot because  each upper  segment is  given a
separate job number.

Another use of upper  segments involves having several of  them which
are attached by a lower segment  one at a time and detached  when the
next one  is needed.  For  a job to  be run, it  must be  entirely in
core, including its attached upper segment, if any.
                      Upper Segment Protection


Since  upper  segments  are  sometimes  shared,  they  can  be  write
protected to prevent any job from changing the code and/or data  in a
segment,  which,  after  all,  may be  part  of  another  job.  Write
protection is just  an option, however,  and shared segments  are not
required to be protected.  The SETUWP UUO is used to change  an upper
segment's write protection status.  The sign bit of JOBHRL will be on
when your upper segment is write protected.

Upper segments have a protection  scheme similar to that used  on the
disk.   Each  upper  segment  has a  nine  bit  protection  key which
indicates who may use that segment and how they may use it.  The nine
bits (777 bits)  are in three groups  of three bits each.   The first
group (700 bits) tells what the creator PPN may do with  the segment,
the second group (070 bits) tells what other logged-in users  may do,
and the third group (007 bits) tells what not-logged-in users may do.
The LUP  privilege (see  page 178) determines  whether the  second of
third group is checked when a reference is made to a  segment created
by some other  PPN.  Within each group,  the first bit (444  bits) is
unused, the second  bit (222 bits) is  read protection and  the third
bit (111 bits) is status change protection.  Read protection prevents
you from attaching to the segment; status change  protection prevents
you from changing  the name, write  protection status, core  size, or
protection of the segment.
                  5.1  Making and Killing Segments


There are  three ways you  can become attached  to an  upper segment.
You can  run an  SSAVEd program (i.e.,  one that  was saved  with its
upper  segment), in  which case  you will  get the  segment  that was
attached to the program when it was saved (or, if someone  is already
using a segment with the  credentials of the saved segment  (see next
paragraph), you will be attached  to a matching segment); or  you can
attach to an already existing upper segment; or you can create  a new
upper segment.

Every  job,  including upper  segments,  has a  list  of credentials.
These include the job name, the project-programmer name of the source
dump file of the current  program, the physical and logical  names of
the device the dump file was  on, the creation date of the  dump file
and the protection.  The  protection for a lower segment  will always
be 000 unless it has been  changed by the SETCRD UUO (see  page 177),
which can also be used to set the protection and creation date for an
upper segment.  When you cause a new upper segment to be created, its
credentials are copied  from your job.  For  a given job, all  of the
credentials except the protection  are set from their values  for the
dump file  which holds  the current  program.  If  the dump  file was
SSAVEd,  then  the upper  segment  will be  initialized  to  the same
protection it  had when it  was saved.  The  lower segment is  set up
with protection 000.

Let me explain this a bit  further with some examples.  If you  run a
system program, your job name will be the file name of the  dump file
on [1,3], your job PPN  (not to be confused with your  logged-in PPN)
will be 1,3, your job physical device name will be DSK,  your logical
device name will probably be null, and your job creation date will be
the creation date of the dump file.  If you run a user  program from,
say, the disk  area [ABC,DEF], then all  this stuff will be  the same
except that your job PPN will be ABC,DEF.

The LINKUP UUO is used to search the system for an upper segment with
credentials that match those of  your job.  The SETPRO UUO  (see page
158) can be  used to set an  upper segment's protection.   The SETCRD
UUO  (see  page  177)  can  be used  to  set  the  creation  date and
protection either for a lower segment or for an upper segment.

When you  are finished  with an  upper segment,  you should  kill it.
This means  that it will  go away (giving  up its job  number) unless
someone else is still using it.

The following UUOs are used to create, kill, attach and  detach upper
segments and to change the size of an upper segment.
LINKUP          [OP=047, ADR=400023]  CALLI 400023
--------------------------------------------------
        LINKUP
        <error return>


The LINKUP  UUO attempts  to find an  already existing  upper segment
with the same  job name, date of  creation, and other  credentials as
your job has.  (The list of credentials required for an upper segment
to match your job is given above.)  If such an upper segment is found
which is not protected from you,  it is attached to your job  and the
skip return is taken.  If there is no such upper segment, you get the
direct (error)  return.  Any  segment you were  attached to  when you
gave this UUO is killed before all this happens.
REMAP           [OP=047, ADR=37]  CALLI 37
--------------------------------------------------
        MOVE  AC,[<write-protect flag>,,<highest address in lower>]
        REMAP AC,
        <error return>


The REMAP UUO causes your core image to be broken into  two segments.
The address contained in the AC right is taken as the address  of the
last word  to be  in the lower  segment.  The  next word  becomes the
first word in the upper  segment and its address becomes  400000.  If
the  sign bit  of the  AC is  on when  this UUO  is given,  the upper
segment will be write protected.

Before your core image is broken, an automatic LINKUP is attempted in
order  to   find  an  already   existing  upper  segment   with  your
credentials; see the LINKUP UUO above.  If one is found, the  part of
your core image that  would otherwise have become your  upper segment
is  discarded  and  your  core  size  reduced   appropriately  before
attaching to the already existing upper segment.

If  this UUO  is successful,  the skip  return is  taken and  the job
number of  your upper segment  is returned in  AC.  If  the automatic
LINKUP fails and there are no more job numbers left to create  a high
segment   under,  or   if  there   is  something   illegal   in  your
specifications, the direct (error) return is taken.

Any upper segment you are attached to when you give the REMAP  UUO is
killed before anything else is done.
CORE2           [OP=047, ADR=400015]  CALLI 400015
--------------------------------------------------
        MOVEI AC,<highest upper segment address desired>
        CORE2 AC,
        <error return>


The CORE2 UUO is used to change the size of your upper  segment.  The
address in the AC is  interpreted as the highest address you  want in
your upper segment; this address, if non-zero, is ORed with  1777 and
the  400000 bit  is  ignored.  If  the  AC contains  zero,  any upper
segment you have will be killed (unless it is protected from  you, in
which case  it will simply  be detached from  your job) and  the skip
return will be taken.

If the AC  contains a non-zero  number and you  do not have  an upper
segment, an upper segment of  the specified size will be  created for
you.  If you already have  an upper segment, its size is  adjusted to
that specified by the number  in the AC.  If this UUO  is successful,
the skip return is taken.  If there is not enough core to  grant your
request,  or if  the segment  is protected  from you,  or if  you are
asking to have a new upper  segment created for you and there  are no
job slots available, then the direct (error) return is taken.  Unless
you are  killing your  upper segment (with  a zero  in AC),  this UUO
returns  with  the  AC  containing  the  total  number  of  1K blocks
available to  a single  user program, counting  both upper  and lower
segments.
ATTSEG          [OP=047, ADR=400016]  CALLI 400016
--------------------------------------------------
        MOVE   AC,[<job number or name>]
        ATTSEG AC,
        <error return - code in AC>


The ATTSEG  UUO is used  to attach to  an upper segment  that already
exists.  You must not already have an attached upper segment.  The AC
should contain either  the sixbit job name  or the job number  of the
upper  segment  to  which  you  wish  to  attach.   If  this  UUO  is
successful, the skip return  is taken.  Otherwise the  direct (error)
return is taken and a code is returned in the AC indicating the cause
of failure.  The error codes and their meanings are explained below.

    ERROR CODE    MEANING

         0        A  protection violation  has occurred;  you are
                  not allowed to attach to this upper segment.

         1        There are two  or more upper segments  with the
                  job name you gave.  The job number of the first
                  one is returned in the left half of AC.

         2        The job number you  gave is not the  job number
                  of an upper segment.

         3        There is no job with the name you gave.

         4        You already have an upper segment.
DETSEG          [OP=047, ADR=400017]  CALLI 400017
--------------------------------------------------
        DETSEG <flag>,


The DETSEG UUO detaches  your upper segment from your  job.  Normally
your upper  segment is placed  into a list  of the segments  you have
detached,  so that  when you  do  a RESET  (see page  250),  all your
detached segments will go away.  However, if the low order bit of the
AC field is a  one, then the segment will  not go into the  list, but
will  stick  around  like  any  other  detached  job.   This  is  not
recommended  because it  can result  in the  proliferation  of unused
upper segments.  Only the low order bit of the AC field is  looked at
by this UUO.

If you  have a simulated  upper segment (see  the SETPR2 UUO  on page
188), it is killed by this UUO.
                 5.2  Getting/Setting Segment Status


The following UUOs are used to find out and/or change the protection,
name and other information associated with an upper segment.
SETUWP          [OP=047, ADR=36]  CALLI 36
--------------------------------------------------
        MOVEI  AC,<zero for unprotect, non-zero for protect>
        SETUWP AC,
        <error return>


The SETUWP UUO  is used to write  protect or unprotect  your attached
upper segment.  If AC contains zero, the segment becomes unprotected;
otherwise it becomes protected.  If this UUO is successful,  the skip
return is taken.  If the segment is protected from you, then  you get
the  direct (error)  return.  If  you have  no upper  segment  and no
simulated upper segment (see the SETPR2 UUO on page 188), you get the
direct (error) return.

If you have done a SETPR2, then this UUO will do another  SETPR2 with
the previous parameters but  with the write-protect bit in  the state
requested by this SETUWP UUO; the skip (success) return will  then be
taken (although if your  SETPR2 specified an absolute  relocation and
you are asking for your segment to be unprotected, it will  always be
write protected unless you have the ACW privilege).

The sign bit of  JOBHRL in the job data  area is a one if  your upper
segment is write protected.
UNPURE          [OP=047, ADR=400102]  CALLI 400102
--------------------------------------------------
        UNPURE
        <error return>


The UNPURE UUO is used  to unprotect your upper segment.  If  you are
sharing a  write-protected upper segment  with other users,  this UUO
will create an unprotected copy of that upper segment (assigning it a
new job number), detach you from the old segment, attach you  to this
new segment, and set the name  of the new segment to that of  the old
segment, but shifted  right one character (6  bits).  If you  are the
sole user of  a write-protected upper  segment, this UUO  will simply
unprotect that  segment and shift  its name right  6 bits.   The skip
return will  be taken  upon success.   If your  upper segment  is not
write protected, then this UUO will not do anything but will take the
skip (success) return.  If there  are no job numbers available  for a
copy of your upper segment, or if you cannot be granted  enough core,
or if you have no upper segment, then the direct (error)  return will
be taken.

If you do an  UNPURE after having done  a SETPR2 UUO (see  page 188),
you get  one of the  following results.  If  the SETPR2  specified an
absolute  relocation, then  nothing is  done and  the  direct (error)
return is taken.  If the SETPR2 specified a relative relocation, then
the write protection is cleared for your second protect  and relocate
register and the skip (success) return is taken.
SETPRO          [OP=047, ADR=400020]  CALLI 400020
--------------------------------------------------
        MOVE   AC,[<Bits 0:8 = new prot key; bits 30:35 = job no.>]
        SETPRO AC,
        <error return>


The SETPRO UUO can be used to change the protection key of  any upper
segment not protected  from you.  Bits 30:35  (0,,77 bits) in  the AC
should contain the job  number of the upper segment  whose protection
you wish to change, where zero means your own attached upper segment;
bits 0:8 of the AC should contain the new protection key you wish the
segment  to have.   If this  UUO is  successful, the  skip  return is
taken.  If a  protection violation occurs or if the job  indicated is
not an upper segment, the direct (error) return is taken.
SETNM2          [OP=047, ADR=400036]  CALLI 400036
--------------------------------------------------
        MOVE   AC,[<sixbit name for your upper segment>]
        SETNM2 AC,
        <error return>


The SETNM2 UUO is used to change the job name of your  upper segment.
The name you wish your segment  to have should be in the AC  when you
give this UUO.  If your segment is successfully renamed,  the monitor
then scans the  names of other upper  segments in the system,  and if
there is one with the same name as yours, its job number  is returned
in the AC;  if there is  no other upper  segment with the  same name,
zero is returned in the AC.  The skip return is taken on success.  If
you are not permitted to change your upper segment's name, the direct
(error) return is taken.  If  you have no segment attached,  the skip
(success) return is always taken.
POINTS          [OP=712]
--------------------------------------------------
        POINTS ADR

ADR:    <block =63 words long for returned job numbers>


The  POINTS  UUO returns  a  list of  the  job numbers  of  all jobs,
including your own, which  are attached to your upper  segment.  This
list is returned in the block pointed to by the effective  address of
the  UUO, with  one job  number per  word.  The  end of  the  list is
indicated by a zero.  This list can be up to =63 words long.
SEGNAM          [OP=047, ADR=400037]  CALLI 400037
--------------------------------------------------
        SEGNAM AC,


The  SEGNAM UUO  returns in  AC  the sixbit  job name  of  your upper
segment.  If you have no upper segment attached, zero is returned.
SEGNUM          [OP=047, ADR=400021]  CALLI 400021
--------------------------------------------------
        MOVEI  AC,<job number>
        SEGNUM AC,


The SEGNUM UUO gets the  job number of the upper segment  attached to
the job whose number is in AC.  The segment number is returned in AC.
A zero in AC gets your own segment number.  A zero returned means the
specified job has no upper segment attached.
               SECTION 6--GETTING/SETTING INFORMATION


This section describes  numerous UUOs that  allow you to  get certain
types  of information  from the  system and  to change  some  of this
information regarding your job.
                        6.1  Dates and Times


Here are some UUOs to get various flavors of date and time.
DATE            [OP=047, ADR=14]  CALLI 14
--------------------------------------------------
        DATE AC,


The DATE UUO  returns in AC the  current date in system  date format.
The     number     returned     has     the      following     value:
((year-1964)*12+month-1)*31+day-1,  where  all these  numbers  are in
decimal.  You can calculate the day, month and year by  dividing.  If
you divide by =31, the  remainder is then day-1.  Then if  you divide
the quotient by =12, the  new remainder is month-1.  Finally,  if you
take the quotient again and add =1964, you get the year.
DAYCNT          [OP=047, ADR=400100]  CALLI 400100
--------------------------------------------------
        MOVE   AC,[<date in system date format>]
        DAYCNT AC,


The DAYCNT UUO converts a date from system date format (see  the DATE
UUO above) to the number of days from 1 January 1964 (a Wednesday) to
the date indicated.   AC should contain  the date of  interest, where
zero  or  a negative  number  is  taken to  mean  today's  date.  The
corresponding day count is returned in AC.
TIMER           [OP=047, ADR=22]  CALLI 22
--------------------------------------------------
        TIMER AC,


The TIMER  UUO returns in  AC the time  of day in  60ths of  a second
after midnight.
MSTIME          [OP=047, ADR=23]  CALLI 23
--------------------------------------------------
        MSTIME AC,


The MSTIME UUO  returns in AC the  time of day in  milliseconds after
midnight.   This time  is  accurate only  to  the nearest  60th  of a
second.
ACCTIM          [OP=047, ADR=400101]  CALLI 400101
--------------------------------------------------
        ACCTIM AC,


The  ACCTIM UUO  returns  the current  date  and time.   The  date is
returned in the left half of AC and is in system date format (see the
DATE UUO above).  The time is returned in the right half of AC and is
in seconds after midnight.
RUNTIM          [OP=047, ADR=27]  CALLI 27
--------------------------------------------------
        MOVE   AC,[<job number>]
        RUNTIM AC,


The RUNTIM UUO returns in AC the total compute time since  login used
by the job whose  number is in the AC.   A zero job number in  the AC
will get the compute time for your own job.  The time returned  is in
milliseconds although it is kept  by the system in 60ths of  a second
and  is not  even  exact to  that  accuracy.  An  illegal  job number
specified will cause zero to be returned.
                        6.2  Job Information


Here are some UUOs to find out things about specific jobs and even to
set certain values for your own job.
CORE            [OP=047, ADR=11]  CALLI 11
--------------------------------------------------
        MOVEI AC,<highest address you want in your lower segment>
        CORE  AC,
        <error return>


The CORE UUO is used to change your core size (the size of your lower
segment if you  have a two segment  program).  AC should  contain the
highest address (in your lower  segment) that you want to be  able to
reference.  This address, if non-zero, is ORed with 1777 (to  make it
a 1K boundary), and then your core size is adjusted, if necessary, to
the  size indicated.   If you  can be  given the  amount of  core you
request, the skip return is taken; if not, the direct  (error) return
is taken.   In any  case, the maximum  number of  1K blocks  a single
program is allowed to use, counting both upper and lower segments, is
returned in  the AC.   If the  AC originally  contains zero,  then no
change  is  made in  your  core size,  but  the number  of  1K blocks
available to a  single program is returned  in the AC and  the direct
(error) return is taken.
PJOB            [OP=00λn0Aβ	$tfa:@↓πβ→→$@f`~(ZX¬5j↓Rj`+++%UVVVKV↓----,αZZ4ZX¬5ji50
UURj`+++%UVVVKV↓---
        PJOB AC,


The PJOB UUO returns your job number in the AC.
GETPPN          [OP=047, ADR=24]  CALLI 24
-----------------------------------------,αZZ4ZZZZ4~∀@@@@@@↓∂)!A≤Aβε0~∀~∀4∃)QJ↓∂)!A≤@A+U≡AeKQke]f↓S\@A¬εAiQ∀AXβ?>;↔⊃7Nq↓βC⊗{(ε.>EWπ⊗|}&∞n\↑"εv≥\PhR

∧rJ
|bπN}↑"εV|%`hPQ)d⎇$W$∧N2∧	$≤:DεNr∂≥w/∩∧
&}∩∞>F∂'↑4απ>}Y∧
<h≤l↑λλ

∃Y+K∧∂;⎇(∧<Y(∞M→#"IIqr3D
|H∪	xrβjjλ897s\0vTVλ:42wλ:44yH*jgP_2t0{→yP24Y32y2[:6<Wλ⊂$z⊂≤rz9FB:42P≠7stwλ(('⊂_w2⊂"~yuP(∀'⊂⊂7Y⊂:44\P57qλ:7P-LV→.Wλ⊂*42[⊗⊂4sλ⊂:42\2P4yCE0w7]42y⊂~7q⊂;Zz4⊂:~2P67Ytw⊂(∀'⊂⊂:~0z⊂:~4yP5≠q⊂:yYr⊂:7H40{2K⊂⊂:4→P9ut\εE92]:y7⊂λ4yP:_urw≥H⊂7z4→y;tyYV⊂:4→P⊂24\2qz⊂≤2z:y≠⊂⊂4yH:0ur[↔⊂⊂⊂∃42P7[2εE6≠stw⊂∀('⊂4\P92z≥y72rλ4w⊂:~2P aKεEβ#bj'⊂fP⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂X~≠Vλ b)≡M___≠.P⊂!Pf&$P
___≠εE⊗VKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVFEλ⊂⊂⊂⊂λ⊂⊂&gU"dP⊂⊂aV≡5≠q⊂7:[q2y∨βE⊂⊂⊂λ⊂⊂⊂⊂⊃bj' SP aVβEεEεB*42P⊃bj' SP*jgH4yP:\rr⊂:≠P3rzλ:42P≠0vrP≠s⊂0w≡P57qλ7w⊂:~2P⊂9↑yz2vK⊂⊂ aCE9t7]v2⊂1[w:0t[⊂:42H7:vq→y⊂7sλ:42P~7q⊂;Z7yrP≠0vrP≡wzP;Zyt⊂:≠P5w7]W⊂⊂$YεE aH1ww:_tw9P≡2y7Vλ0P72Ypz4{→P⊂7:[q2y⊗λ7y⊂0[⊂4v6→spv⊂~7q⊂⊂≠:vq2\⊗⊂:4→wεE<[zy⊂⊂~7q⊂⊂~yP0y\zvrr⊂⊂⊂*~2P⊂9Z|14zλ⊂70vYP7s⊂λ:42Pλ57q⊂λ9x2qZs4rrλ4yFE≤2z:y≠2r⊂4[⊂ aWβEβ)bj'⊂fP⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂X~≠Vλ b)≡M→nP⊂⊂`f&$H~→FEVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVCE⊂⊂⊂λ⊂⊂⊂⊂∪gk"Pλ⊂ aV⊗↑9t|_4z⊂5≠q⊂70[r←.FB⊂⊂⊂⊂λ⊂⊂⊂)Qj' fH aVεBεEεE∃42P)Qj' fH*jgP~yP:yYr⊂:7H⊂1t0[3rP<[zy⊂5≠q⊂70[rP:7H:40zλ3t{2[⊂⊂4wλ:42FB aW⊂λ w<P~7q⊂7_vrP4\P62sXv↔εEβ)bj!T"⊂⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂X~≠Vλ b)≡M___≠LnP⊂!Pf&$P
___≠LFE⊗VKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVFEλ⊂⊂⊂⊂λ⊂⊂&gU"P⊂⊂⊂aV-↑≠2{P8≤7z2q]4ww⊂_w2⊂1\2pz4[w⊂20]2←.FB⊂⊂⊂⊂λ⊂⊂⊂)Qj!i"λ aVεBεEεE∃42P)Qj!i"λ⊂*jgH4yP:\rr⊂⊂≥7P9r]⊂:42H⊂897]2qz4[w⊂0w→⊂1y2Xz4wwλ⊂20z→P7sεB2tz4→y⊂<w]y⊂67]ry⊂9Ysvrw≥⊂7y⊂≡wzy⊂≥x82yλ9rsvYw:↔⊂λ*42Pλ72{P≤97z2Xz4wwβE0w2λ1y2p]4ww⊂→0z2P_y2P:_urw⊂→97vP≥42P PP9x2Xts4rY⊂4w⊂≥42P*UgW⊂⊂∩s⊂0w≡FE7sλ14z9H⊂_⊗⊂P⊂0w→⊂≠⊂∀
~~__⊗⊗_⊂λ14z9JP0y2H⊂7w2\V⊂:4→P⊂89≠z2qz~ww⊂0[2εE1\2pz4[w⊂20]2P7sλ<wzyλ:x82\⊂9rs[rw:⊂_y2P9Yz≥P7]42y;ZyrP:~2P89≠z2qz~wwεE_w2⊂⊂_y2pz~ww⊂2_z2P⊂≠s⊂⊂<[zy⊂6≠{ry⊂λ0y2Pλ9rz↔λ⊂!4z≤P⊂_≥∞⊂⊂9x→qts<H:42FB897z→qz4w[⊗⊂⊂1~z9P⊂Y]→→H⊂:42H⊂:4vYP⊂7sλ⊂1y2Xz4wwλ⊂∀4wλ⊂6tw≥z2yP_s:2yβE6tr≠4st:
P⊂0w→⊂⊂14]9P⊂→
≥→ZPλ:42P→0z2Pλ7s⊂⊂_y2pz~ww⊂⊂
4w⊂⊂≤|yz2[P20z→FE37\6pz∀K⊂⊂!4]9P_⊗λ→P0w→⊂≠⊂∀
~~__⊗⊗_⊂_4z9TH0y2P≥:y72Y⊂7s3λ⊂12s≠y2P:~2FE8≤7z2q]4ww⊂~yP9z≠y2r↔λ⊂$s⊂_4z9Pλ_Y]→MP0y2H0v6⊂≡2y7Vλ:42Pλ1zy9→w:⊂:~vrFE_w2⊂2_z2P⊂≥tv6⊂_2P:yYr↔⊂⊂λ*42P≤97z2Xz4wwλ0w2⊂λ1y2p]4ww⊂→0z2Pλ0y2P≥yrrεB6ptw≠<P4wλ1ww5≥w1z4[w⊂;t]4⊂⊂6~w5tw→P:7P≠y⊂1y→pz4w→P0w⊂λ:x82\⊂9rs[rw:≥CE9rrH)rqz~ww⊂~H7w⊂:\82y⊂≤rsvr[:9WεBβ#bj(∀+⊂⊂⊂λ⊂⊂⊂⊂λ⊂-gh∂X~≠Vλ b)≡M___XMnP⊂!Pf&$P
___XMFE⊗VKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVVVKVVFEλ⊂⊂⊂⊂λ⊂⊂&gU"P⊂⊂⊂aV-↑_wr2←⊗≡57X⊂7:vX2y∨.CE⊂⊂⊂λ⊂⊂⊂⊂⊃bj()∃⊂ aVβEεE⊂∂1wr2O⊂≡P_λ3rz9H:42P~7q∪yH qz4]2P89~{4v2YryWεB⊂≡1wY2←⊂≡H_P3r]9P:4→P57q	yP(0\yt{2H894{~v2sr\WεE⊂∂1wr2O⊂≡P→λ3rz9H:42P~7q∪yH*2vx≠y0xαy privileges.


The GETPRV UUO is used  to get a particular job's active,  passive or
temporary privilege bits.  AC right should contain the number  of the
job whose privileges you want returned; a zero or illegal  job number
will get you the privileges of your own job.  AC left  should contain
a code indicating which type of privilege bits you want  returned for
the specified job.  The  types of privileges and  their corresponding
codes are listed above.

A job's ACTIVE PRIVILEGES are those privileges currently  enabled for
that job; these are the privileges that are checked when  you attempt
to execute a privileged  function.  The PASSIVE PRIVILEGES  are those
privileges which the job is always permitted to enable; these are the
privileges  granted to  the job's  PPN and  are normally  all enabled
(turned on in the active  privileges) when the job logs in.   A job's
TEMPORARY PRIVILEGES  are those which  have been  temporarily enabled
(turned on in the active privileges) by the system for the benefit of
the  particular  program   currently  running  on  that   job;  these
privileges are enabled by monitor commands that run  various programs
and are automatically disabled  by any MONITOR COMMANDS  that attempt
to change the job's core image, disk PPN (alias), or I/O  state.  P	!J~∃`&+7C?⊗Keβπ∪'['f+∨↔MεMβ←.c1βπ~βS#∃πβπOOO3∃βC⊗K['3.;↔Mβ≡9β*β↔;π⊗c↔⊂4V∪e↓β&C∃β+}⊃m↓β&CWMβ
↓β+?∩β∂π9αβ∪'O∞∪3∃βO#M↓β&+7C?⊗Ke↓πβK'[Nc↔∨↔~βπ;⊂hSK∃7.sπ3*βS#↔jβ3πS/⊃β'S≡+3→↓GβK?[N#↔⊃β&C↔eβ∂∪∃βO&K31β'+K;↔"β?9βNqβS#(h++?∩;MβS.kC?K∂∪eβC⊗K['3.;↔M%ph(4*&C∃αN-"BJYααVV=ε∪↔3?o  enable or  disable privileges
(i.e., to turn them on or off in the active privileges).  The various
privilege bitpε↓C]HAQQKSdA[KC9S]Of↓CeJA∃qaYC$β;↔⊃εK9βSF)↓βS∞∪3∃β⊗+3?]ph*S=π∪↔GW/≠QβC⊗K['3.;↔M1π≠↔∃β∞seβOO≠S↔5πβK?∨⊗77↔∩p4(4R↓↓↓α∀JRM↓αα>∞Ra↓↓↓α↓↓↓↓∧rε6∃α↓↓↓↓¬αJ&ZLb⊗≡⊗"↓↓↓↓α↓↓↓↓∧zB⊗J
"&>:_h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓αB⊗∀j&RR, 4(4R↓↓↓↓α↓↓↓↓α↓QAAβ↓A11α↓↓↓↓¬αJ&B∃1↓↓↓∧≠π9β.sπ3*βπ;eπβK'[Nc↔∨↔~p4)↓α↓↓E↓α↓↓↓↓∪↓AAAαa1A↓α↓↓α∩
:BJYα↓↓α∂∞q↓βW≡)↓β∪O≠-↓β∞∪O?3/#∃β←⊗KS∀4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓∧jRεB*↓βπ;"β∂↔K&'9↓ε{S#↔∩β∪'OXh)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓α6R
α↔M8hQ↓↓↓β⊃↓↓↓α↓↓EAβ↓AA1c↓↓↓↓ααBJ>¬∩Y↓↓αα∂π9αβ∂#πv;∃βSF)↓βC⊗{S↔∂&K?9β}04)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βπwIβ∪'≡Yβ≠'f)84)α↓↓↓Mα↓↓↓↓β!AAAαa1A↓α↓↓↓α∀*εBJ2↓↓↓α≡9βK.⊃βπwIβ∪'≡Yβ≠'f)84)α↓↓↓Qα↓↓↓↓β⊃AAAαa1A↓α↓↓↓α=∩RBJ2↓↓↓α≡9β←⊗KS∃β∞seβ∪O≠-β≠Nc∃84R↓↓↓↓*↓↓↓↓α↓EAAβ↓11Aα↓↓↓↓¬*∩BB∃1↓↓↓∧{3⊃7∨#g3∃¬*∩CMRα∂π9π∪↔π⊃␈;K'S(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βCπ∨≠←?K"↓β3}≠-↓β∞s⊃↓↓ε≠π9↓ε#<4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓α∀*:ε6*β?Iα,rR⊗Iπ;'S#␈+Qβ∨O3';≤hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβCπO∨;?K⊃ph)↓↓α↓Y↓↓α↓↓↓Qβ↓A11α↓↓↓↓α↓αVB=αJY↓α↓α∂πr↓βO↔f+∂Q↓ε;e↓∧J&'Mαβ?I↓∧"⊂4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β≡Cπ;;.cM↓βNqα∩BJ↓βCK};Kπ5Zβ∂π8hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ∪=α4"N6εαβS=β∞sg?;*p4)↓α↓↓]↓α↓↓↓↓∪↓AA1c↓↓↓↓α↓↓α6-~BJYα↓↓α∂∞qβWO*↓↓A1c!AAAβ↓β'"↓β'9¬αRd4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓εsW7/⊃βS=αβ∪=α¬"fVV␈→↓βSzαRRg_h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β;?"β?←;.!βeπK?U8hQ↓↓↓βA↓↓↓α↓↓EAβ↓11Aα↓↓↓↓αα.&2¬∩Y↓↓αα∂π9αβWO∃εk?;'&{I↓α\J21β≡{77πv 4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β?rβπ;eεS?	8hQ↓↓↓βI↓↓↓α↓↓QAαa1A↓α↓↓↓↓αα∩⊗Z¬∩Y↓↓αα∂π9∧"⊗Rε≤Aβπ;"αεRR~!β∪/3'∂↔≠X4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β∂∞qα~2-~!β/≠eαR%KM84R↓↓↓↓↓↓↓↓α↓IAAbaA↓↓α↓↓↓↓¬~⊗≡B∃1↓↓↓∧≠π9↓εSSπ≡AβS=αβ?I↓ε≠#π;>)βS#(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β←KO#∃7C⊗{S↔∂&K?9β␈⊃βCK␈#↔∂SN{84)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β↑+eβ?2βπ;eπ+CC↔∩βO↔∨n+;Q8hQ↓↓↓β	E↓↓α↓↓EAαa1A↓α↓↓↓↓ααNN2¬∩Y↓↓αα∂π9αβO↔Qπ≠gOS.i↓βO/∪['∂*β3↔[.`4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βK/≠↔K[∂#'?9π#π3*p4)↓α↓↓EIα↓↓↓↓#↓11Aα↓↓↓↓α↓↓αε≥:BJYα↓↓α∂∞qβ∪=π;K'S*k↔;π⊗c';≥εO?g+S∀4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓¬~⊗RB∪⊃αVVzp4)↓α↓↓EMα↓↓↓↓∪↓11Aα↓↓↓↓α↓↓α&t2BJYα↓↓α∂∞q↓β∪z↓β∪'≡Y↓↓β∞∪O?3/#∃↓β⊗+π⊂4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓∧jRεB*βπ;⊃ε#'O-ε3'3∃αβ';≠zβK↔π h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓α6R
α∃84R↓↓↓↓!↓↓↓α↓EA1c↓↓↓↓α↓↓↓↓¬"2.B∃1↓↓↓∧≠π9α$
2-β&yβπ;JβS↔KnK;π1bβ↔[↔ph)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β'→εKQβ'~βWOJp4)↓α↓↓EUα↓↓↓↓"a1A↓α↓↓↓↓α↓↓α~∃:BJYα↓↓α∂∞q↓↓β⊗+π⊃↓αβ?I↓α↓β←KO#∃↓↓ε;d4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓∧c'K∂≠∂?C*β≠πO"βπ;"p4)↓α↓↓EYα↓↓↓↓∩a1A↓α↓↓↓↓α↓↓αb=αBJYα↓↓α∂∞q↓βW≡)↓αb=αVV=jk+?	αβ'Mβ6{;P4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ε≠?7CNc↔I8hQ↓↓↓β	]↓↓α↓↓E1c↓↓↓↓α↓↓↓↓αα2VB¬∩Y↓↓αα∂π9π∪↔≠↔⊗+;∂∃ε3'3↔~↓βπ;"βWCC/⊂4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βO.;7↔;'→βπMε	↓β3};∨↔⊃nK9βW≡+I84R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓¬##πQεKM1β>C↔9β
β+?	π∪↔≠↔⊗+;∂↔_h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β¬↓ε#'O-αβ≠'3*β;?Qαβ?9↓εKSMβ␈;84)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β&KO-β∂∪↔¬β␈⊃βπ9αβWCC/⊃βO↔>k↔;PhQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ∂K↔∂#↔⊃β↔IβO?n)β?SF+IαB∧q1βSF(4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βOO≠S↔5ε≠#↔∂←→βS#*βO↔∂}s⊃β∨⊗{W@4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ε{→βC⊗{S↔∂&K?9β⊗KSM↓αAA]Aε∪'SMHh)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β'9αβS#∃αβ≠'3*;M↓β␈⊃↓βO.;7↔;";L4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓βπ∪?S↔∨#'?9ε[↔eβN1βS#*↓β+?∩β#πLhQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβS#'~↓βCKO3'3↔>)m↓βN1↓βSF)↓β+}⊂4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β∪}+Mβ;␈!β#π6)↓βSFKMβC⊗K['3.;∃04R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π##∃↓π≠gOS.i↓β∂F+∂/MαβS#∃π##'K h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β∨K␈+A↓↓αAAA]α↓β''→%↓↓εK9↓β&C∀4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓βπ∪?S↔∨#'?9αβ/↔ejkO↔∃αβS#∃ε#'O,hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ≠'3*βCK?&+∂S'}qβOg∨#↔5β}qβCπ>(4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓EJβπ;⊃π##∃↓π≠↔∨7.sQβC⊗{S↔∂&K?84R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π≠gOS.iβ?9πβπ∨∃α↓EQar↓α↔[/∪g?;(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β∂?oβ3↔S.ceβ3};∨↔⊃εK9β∨/#MβSFKL4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓βπ∪'['f+∨∃9α↓α+?↔→↓β←O##?W"βS#∀hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αα2VAαβCK'6K3↔∨*βπ3Oz↓β∂πvs?Qβ&x4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βπwI↓β?2↓βS#*↓β≠?fc?←'v9iβO&KP4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π≠Cπ∂/;πI↓πβK?∂/≠O↔MZ↓βWO*↓βS#(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓α⊗&⎇"5αV,ymβO&KQ↓ε9β'w#↔KK/βP4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓βπ∪?∂↔∨→β'9∧J>Q6-~⊗Iβn{∪∃9αα≠?HhQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ+?~↓β←'&C?WQαβS#'~βCK'6K3↔∨*`4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βOε∂↔←∂⊃↓βπv!↓α⊗LzR5↓¬*V?Mε;↔P4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π##∃↓∧J22⊗<
1αV,y↓β7/≠Oπ∨*aβπ; h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β';&+KKWπ!↓βC⊗{∂↔O≡+M↓β∂∪∃↓β↔+84)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β↔+Q↓βv{Q↓βNq↓↓αLzQ6V≤*I↓βn{∪∃8hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ααπ3Oza↓β∂/∪Sπ'r↓β∪↔6K∂↔Mε≠π;;␈ 4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β*αεNNL:;↔⊃ε{Iα&tJS↔⊃αβeβV{L4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π##πQα↓β∪=α↓β;?"↓↓↓βF[∃↓αβS#'_h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βCKO3'3↔>)84(2N⊗%αJY↓α↓↓↓↓α↓↓αn⎇↓uAQ:aαε∩∪iQAAβ1Zu↓∧~ε22J↓QAAβ1X4)ji555ji555ji555ji555ji555ji555ji555ji555ji555ji554hQ↓↓↓α↓↓↓αlzZ∃↓ααε
1f∂S'6)βCKO3'3↔>)β''→βg?*β←π;#p4)↓α↓↓↓↓ααN⊗R¬∩Yαε~`4(4Ph*S#*↓αN⊗%αJY↓¬*V=↓εKM↓β/≠↔⊃β&y↓β≠Ns⊃↓β␈+Q↓β∞s⊃??∩↓β∂#∞s∨∃↓πK?WIε∂S'6(4+C⊗K['3.;↔M9α↓↓"O.)↓βSF)α≡⊗%αJY↓¬*V=↓ε?[*β≠?IαβS#∃αβ7↔πvK;∨Mαβ?→β&C∀4+&K≠≠↔⊗+;Qβ↑K;∪Mε{→βC⊗K['3.;↔M9J↓↓αε~βO#?.c⊃β∂}sSπ'rβ↔'SF+I↓5
↓β?Iπ##∀4V∂S'6)↓βC⊗K['3.;∃↓β⊗KSM↓πK?U↓π;π;Qr↓α'→ααε
↓ε≠?;S∞K;M↓αiE1↓π##↔9πK?WHhSCK'6K3↔∨/→β←'faβ;?"β∃↓ε≠#π;>+⊃1βW+OQβ⊗+SWKv+⊃β'rαε
9α↓α?SF+K←'≡)1βπph+πS&+7CQαβ←'3bβ∃↓εkπ∪∃π#=↓β≡+Qβg␈+I↓β∞≠S'[*βCK'6K3↔∨*↓β''→↓βSzβS#?≡(4+'v#'∂π&+⊃β'r↓αε
r↓α↔π≡A↓β;/9βπ∂&K[∃βπ∪'['f+∨∃↓ε∪'Qβ⊗+GW↔∨#↔⊃↓π;'31ε∪∀4+?∪π;S.!β?;gIβ'→ε+'S#/⊃↓E%π##∃βv+]βC⊗K['3.;∃βO!β←πw#↔⊃βO→β?9αβ'9βN{WH4WβπOOO3∃↓β␈⊃↓βS.kC?K∂∪e↓βπ∪'['f+∨↔Mb↓β?Iα↓I%βN{U↓β∨+KK↔w#3e↓εCπ[∃αβS#∀hSCK'6K3↔∨*↓βCKO3'3↔>)↓↓↓F∪'Q↓β↓57SF)↓↓Qβ↓AAAbaA↓↓ε∪'Q5o∪↔CK/≠↔;S~↓βS#(h+CKO3'3↔>)↓βC⊗K['3.;∃%1αβ?I↓β→%α*∃"NRMαβ';∪N≠πS↔~↓βS#∂!↓βg␈)↓↓β∂∪∃↓β∞p4+π≡≠?W;&K;≥βπ∪?∨K∞iβ←'&Aα*ε≤~QβO/!9↓αF{←↔[/⊃1βSF)βOg∨#↔5β>K31↓ε∪∃β∨f⊂4+&y↓β∪O≠π3*↓↓βπwI↓βC⊗K['3.;↔M↓αβg?Uαβ;=↓αβ3?;>+I↓β>;Q9α↓↓αWv#↔I↓ε;d4V≠'K∂.kOSπv≠↔M1π##∃β⊗+OW3&;Q↓π≠↔SSNs∨Mβ}1βg?/⊃βπ∂&K[∃↓πβK'[Nc↔∨∃ε∪'SLhQ#%;*q1↓βN{WIβ∨+KK↔w#3e7.sπ3.!↓βC⊗K['3.;↔M%π;'31αβ∃β⊗+SWKv+⊃↓βNqαε
ph*S#*β[πKus privilege  bits and their  meanings are explained  in the
table above.  To request privileges, see any system programmer.
WHO             [OP=047, ADR=400112]  CALLI 400112
-------------------------------------------,αZZ4ZX¬4hQ↓↓↓α↓↓↓αlzZ∃α→2msV{	β;.k↔Iε{I↓Aε{I↓5q12ε%∩t4)α↓↓↓↓α↓α↑"z↓αε
`h(4*"Ii↓α↓↓qI∩k←?K"β3?≡Yx4(hP4*SF)α↑"zαVV=εKMβW≡+⊃βSzβ∨↔QαβS#∃π;#0≡M≥f*ε|dε∞w∀
&}∩
}"ε}d∧π&FT∞7O∨L]Rph(_2π⊗≤⎇π"π=
w.fD6}wL≥⊗rπMRαε≤LG⊗/>4ε}2∀β∪∩↑⎇w⊂λ_[
|zh~-dλ≥z
≤zλ≥
#"]m
{~;LT≥z;
D_Y(∞ 2z:y≠2r⊂0\P⊂0wλ iadV⊂9z9~w3P∀→w24w→P;tz~⊂⊂0P_py8αiage
return, linefeed, and one to  five nulls to fill out the  last wor↓HR\4∃βεA1KMhAMQ←kY⊂AG←]QCS\A∃SiQKHAiQJ↓]k[E∃dA←L↓iQJA)←DAo!←gJ@↓oQ←Y%]JASL~∃IKMSeKH0A←dAiKe↑AQ↑@AO∃hAiQ∀AoQ←1S]JA=L@As=kdA←]\AU←λXA←dABA]∃OCiSYJ~∃]U[EKd↓i↑@A≥KhAi!JAgsMiKZ@↓oQ←Y%]J\@↓∪LAβ@AYK→hAG←9iCS]L@AC\↓SYYK≥CX~∃A←gSi%mJAU=DA]k5EKdX↓iQK\↓iQJ@↓oQ←Y%]JAM=dAs←UdA←o8AU←DASfAIKike9KH\~)∪LAβAYKMPAG←]QCS]f↓BAYK≥CXAU=DA]k5EKdA	khAi!KeJA%fA]↑↓U←D@↓oSiP↓iQCh4∃]k[	KdXAQQK\AQQJA]UYXAgQeS]N↓SfAe∃ike]∃H\~∀→'→Y_@@@@@@@A7∨@z`hn0Aβ	$th```Pi:@A
β→→∩h```Ph~∀Z4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZ~(@@@@@@A≠=-
@@↓βεY7¬	$XXqU←DA9k[EKH⎇:~∀@@@@@A'→∃-_A¬εX~∀@@@@@@yg∃emSG∀[YKm∃X[[←9Si←d5←]Yr↓Kee←HAeKiUe\|~(~∃β	Ht@@@ygKeYSGJA1KmKX↓G←ghP`X@DXA←ddR|X1≥¬$~(@@@@@@@y	Y←GV↓←LA≥	$Ao←IIfA←_AgKeYSGJA1KmKX↓iCEY∀|~∀~(~∃)Q∀A'→Y_A+U≡ASf↓kgKH↓i↑AM%]HA←UhABA)←DOf↓Gkee∃]hAg∃emSG∀AYKm∃X\@A¬ε~∃g!←kYH↓G←]i¬S\Ai!JA]k5EKdA=LAiQ∀AU←D↓oQ←g∀AgKeYSGJA1KmKX↓s←j@↓oC]h↓i↑~∃-]←nv↓BAuKI↑@AU=DA]k5EKdA5KC]f↓s←kdA←o\↓U←D\A)QJ↓gKem%GJ@A1KmKXQS\~)aKeG∃]hRA=LAiQ∀@AU←λAS]I%GCiK⊂AoSY0AEJ@↓eKikI]KHA%\AiQ∀AYKMP@AQC1LA←L4∃βεv↓iQJAISOQhAQCY_AoSY0AG←]QCS\AQQJ@A)←DA]U[EKd8@A∪L↓s←j@↓gaKG%MrAC8~∃SY1KOCX↓U←DA9k[EKHA←iQ∃dAiQ¬\@@ZDXAuKI↑AoS1XAEJ↓eKikI]KHA%\@Aβ\@Aβ⊃$~∃SLASO]=eKHAU]YKgLAiQJ↓U←DA9k[EKHASf@4b\~∀4∃∪LAQQJAU=DA]k5EKdA%f@Zb↓C]HAe←jAQ¬mJAi!JA''0AaeSYSYKO∀@QR]∀\XAs=jACe∀~∃iQ∀@AgKImSGJ↓YKmK0@A[←9Si←d$X@Ai!K\Ai!Sf@AU+≡Ao%YX@AMKh@AQQJAgegiKZ≥f~∃g∃emSG∀AYKm∃X@Ae∃gKem¬iS←\↓iCEY∀@AC]⊂AgWS@ASL@↓ShASL@Agk
GKgg→kX\@↓∪\~∃QQSfA
CgJX↓βε@A1KMhAMQ←kY⊂Aa←S9hAi↑ABAE1←GVA]Q←gJ↓MSegP@Ao←IHAgQ=kYH~)G←]i¬S\Ai!JAG←IJAG←MhA←L↓gKem%GJ@A1KmKXQoQS
PAgQ=kYHA	J@`XbX@A=d@dR4∃S\@↓SifA1KMh@↓QCYL↓C]H@↓iQJA9k[EKH@A←L↓o←eIL@A←L↓gKem%GJ@A1KmKX↓iCEY∀~∃M←1Y←oS9N@AS8ASifAeSO!hAQC1L\@@↓CGP↓o←eHA←LAQQJ@A→←YY←]S]NAMKemS
J~∃Y∃mKXAQCEYJ↓gQ←k1HAQCYJAiQ∀AM←e5Cht~(@@@@qgKem%GJAY∃mKXA→eCGi%←\|X0yae←≥eC[[∃dA]C5J|~∃]QKeJ↓B@yg∃emSG∀AYKm∃XAMe¬GiS←8|A←LbXX`↓o←kY⊂AEJ@D``J\4∀→%→Y_@@@@@@@A7∨@z`hn0Aβ	$th```Ti:@A
β→→∩h```Th~∀Z4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZ~(@@@@@@A≠=-∩@↓βεXyAe←Oe¬[[Kd↓]C[Jx~∀@@@@@@↓%→-∃_Aβε0~∀~∀4∃)QJ↓%→-∃_A++<ASfAUgKHAQ↑AMS9HA←kPAQ←n↓[kGP↓gKem%GJAY∃mKXA%fAeKMKemK⊂~∃M←HAiQJAGkeIK]hA!←kd@↓ErAB↓aCei%GkYCH@Akg∃d\@AQQJ@AUgKdOLAae←≥eC[[∃d~∃]¬[JAg!←kYH↓EJAgAKGSM%KHAS8AβεAISOQhlAiQJ↓gKem%GJAY∃mKX@QS\AAKeGK9hR~∃%fAeKQke]K⊂AS\A¬εAYK→h\@A¬εAeS≥QhASLAk]G!C]OK⊂AErAQQSfAU+≡Ak9YKgf↓iQJ~)dβ↔O/∪[↔⊃π≠↔K[N≠∃β3/3↔1βO→βk↔⊗y1β'rβ←#'≡Aβ∂π≡)βk↔⊗yβ'Mπ∪↔SW⊗s↔⊃βNqβS#(h+←#}c∃αε~q↓αSF)β?KN;';πbβ[π3.)β?→∧

β3.3Qβ'~β'∨;␈∪↔⊃β↔IβS#O→αVVzp4(1↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓Ys→↓α3}{/';:βπQβ&C∃α7}s'S?⊂h(4(hR#↔K*βπK∃π≠?7∃¬*V?Mπ+O↔⊃π#=β↔F7';*β[πKN{WMβεKSMε{→βSF)β7?vKS?Iph(2:εl*&9↓α↓↓↓↓α↓↓αn⎇↓uAQ:aαε∩∪iQAAβ!Nu↓∧~ε22J↓QAAβ!L4)ji555ji555ji555ji555ji555ji555ji555ji555ji555ji554hQ↓↓↓α↓↓↓αlzZ∃↓ααε
2[cO'c⊗KQβ+}⊃β;πn)zt4R↓↓↓↓α↓↓α:j⊗&9∧

04R↓↓↓↓α↓↓↓s/∪K?Iπ∪↔SW⊗q↓5β≡{∪∃βNqαε
ph(4(hRS#∃∧rε6⊗Lq↓αV,yβ'Mπ+O↔⊃αβS=β&+S↔KnK;∃↓εK→βSF+K∃β∂∪∃↓β∞seβ+}∪M↓βNqβS#(h+Og∨#↔5β>KS!β
↓βCπ↔#'∂WfIβ+}⊃β;πn)9↓α→↓βOF{W3⊃ε≠?;S∞K9βSF)↓β+}⊃β;πn(4+g␈)βπK*β';S/∪↔OS.!↓β'rq↓α'2βS#↔⊗)β'Mαβ↔cπ∨#3eβ}s∃β+}⊃β←'&A↓βSF)β∨'6+84+v7∃1π##∃β≡['A↓αCOW∂≡+OM%π∪↔SW⊗qβ'Mπ#π/↔r↓βπ;"βS#∃εS?	βw+7↔∩↓β?→π##∀4VS?	β>KS!↓π##πQεsπ7∃αβ'Mβ⊗+SWKv+⊃↓βNqβS#*↓αε
r↓α?SF+K←'≡)1↓β&C∃β∪O∪↔∂PhQ#↔K⊗{I%β⊗+SWKrβ'M↓π#π/↔rβπ;⊃ε	↓β∂}#∃β'ned in  AC; a code  of 1
means that there is no job with the given name, and a code of 3 means
that there are two or more jobs with that name.
JBTSTS          [OP=047, ADR=400013]  CALLI 400013
--------------------------------------------------
        MOVEI  AC,<job number>
        JBTSTS AC,


The JBTSTS UUO is used to get from the system the job status word for
a  particular  job.  AC  should  contain  the number  of  the  job of
interest, where zero means your  own job.  The table below  gives the
meanings of some of the bits in this word.

    BITS   OCTAL         NAME      MEANINGS  OF  1'S  IN  THE JOB
                                   STATUS WORD

    0      400000,,0     RUN       The job is runnable, though it
                                   may be in a wait state of some
                                   kind.   This  bit  gets turned
                                   off   by   typing   control-C,
                                   giving   the   EXIT   UUO,  or
                                   hitting some kind of error.

    1      200000,,0     CMWB      The  job  is  waiting   to  be
                                   swapped   in   to   service  a
                                   monitor command.

    2      100000,,0     JACCT     LOGIN  or  LOGOUT  is running;
                                   any control-C's typed  at this
                                   time   will  be   turned  into
                                   altmodes.

    3      40000,,0      JNA       A job number has been assigned
                                   to this job.

    4      20000,,0      JERR      The job  has hit an  error and
                                   cannot be continued.

    5      10000,,0      JLOG      The job is successfully logged
                                   in.  System phantom  jobs (see
                                   the  WAKEME UUO  on  page 256)
                                   run  with this  bit off  as do
                                   temporary                 jobs
                                   (project-programmer   name  of
                                   100,100) started up bp∩↓[←]SQ←d~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@A
←[[C9If@Q1SWJA]⊃≡R@↓iQCh↓]KKH4∀@@@@@@@@@@@@@@@@@@@@@@@@@@@ABAU=DAEkPAoQS
PAI↑↓]←hAIKckSIJ~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@As=j@Ai<AEJ@↓Y←OO∃HAS\8@@Aα↓U←D~(@@@@@@@@@@@@@@@@@@@@@@@@@@@@↓oSiP↓iQJA)→∨∞A	ShA←→L@Ao%YXAE∀~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@AWS1YKH@↓SL@A∧@A[←9Si←d↓G←[[¬]H~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@A1S]J@↓Sf@AQsaKH↓i↑@A%hX@A%LASh4∀@@@@@@@@@@@@@@@@@@@@@@@@@@@AKqSQfXA←HASLA%hAQSQf@AC8AKe`⊗{H4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β∨+∂!↓εM↓β∞q↓↓βNc3↔∨∞a↓β7.k?KdhQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβHε.l↑&.v<Tααε}$ααπ≡&O'∀∧ε/↔-} hR∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∞⎇ε.r∧
↔"ε≡4αεv}Dαε.l≤&f.Df␈⊂Q$ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧	∀dj∧
w∩∧→jE∧
$∧εNwL↑'↔/∞N2Jε}!PRα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧αε∞d
⊗ff\|⊗b¬ZYrph!Q"αα∧εbαα∧∧αβ#εεαbc∧∧ααα∧∧¬≤Dd∧ααα∧∧¬&FT∧εV}$∧εO~∧7/↔,]g&g∀∧ε⊗.≥lphR∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααπ=∞V66L\BεNd6␈⊗UaPPh$∧ααβt∧ααα∧ε#ββ¬ECαα∧∧ααα
:uαα∧∧ααα
↓~T~[xD
<h≤n|<≤→,D≠⎇=¬a"C"D∧λλ∞∧∧λλλ∧ε,¬Eλλ∧∧λλλ	*q1h∧∧λλλ
M→(λ
-xHλ
≡hλ≤L\;≠≡$∧_;H∞↑≤→<AQHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧≤y9m\;]AQC"H∧∧λ∞(∧∧λλλεFε∧λλλ∧∧λλ⊂iItHλ∧∧λλ∃
(λ~M|H~_.4λ_(∧{≠xm4≤Y<.\<⎇β!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧
;KC!!"Hλ∧∧,∞F⊗λλfv∧∧λλλ∧∧λ∃u	X4rh∧∧λ∃~
≡h→Z,]→λ≥m≥≠λ_LT≠[{E←Y<[d
9C"D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∞M→(~M|H~<d∞<z;Lt_(λL8⎇_.(≠|AQHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧≠89ml=~8d∧≥_<T_;Y∧∧~<h∞|:=~-lc"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ→M}H≥~T→→=M≤y)|d{{]∞-{≠→.$≠|C!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∞~→(L=_(={]≤M⎇≠→<EDλ≥z
≤zλ~.1"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ≥<l\λ_↑$[⎇~∧∞~→(∧→8⎇≡→<h≥Yβ"D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∞M→(≠,≤h≥_.<kC!!"Hλ∧∧-(∧∧λλ
¬Eλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ
≥-n<y9¬⊃"C"D∧λλ&dλλλ∧εK∧∧λλλ∧∧λλλ	)∪⊃∩)dλλλ
M→(~M|H≤z
};→λ
m⎇λλ,(≤⎇l≡≤→9↓QHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧≠⎇=∧¬_]=∧
8>(,(≤z∞\Y[→,E+C"AQHλλ∧ε-hλ∧∧λ+¬Fλλλ∧∧λλλ∧∧∩Ut∧∧λλλ∧∧∃~~.4λ≥<∞<Hλ∞<9{9-nλλ~.4≥|Z.L#"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ≤∞-⎇→8nL9H∧∧λ∃~
≡hλλ∧Z=λ∧∧~<c!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧
98;M≥Yy]-Dλ≠{MO(~9D∧_Z=∧∧∞λ~.1"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ≠{ED≥~_.D~<k∧
{[≡$
9Hλ∞M~<h
-xC"D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ
≡h_;D∞<≤→.$≤y9m\;]AQC"H∧∧λ.∧∧λλλε¬
εελ∧∧λλ∀h~RQ⊂$∧λλ∃
(~[l$→_=∀_<Y,∀~<h∧∞x=Y,D~;C!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧	PU∀λIC"AQHλλ∧ε.(λ∧∧λ¬FLεελλλ∧∧∃r4λYQλλ∧∧λP(∧εLλ∧∞Y<⎇≡]λλ
<h~≡≤→;L\β"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ_-lλλ~M|Hλλ∞|<hλ
⎇HλλM<zh∧;Yβ!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧{⎇;MI⎇λ|=λ≥m≡→9D!"C"D∧λλF∧λλλ∧ε&ε∧∧λλλ	)∪prd∧λλλ
M→(~M|Hλ~.4≠≠xm<9λ~-dλ_{n,(_↑!QHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧≥~→$	∪prd
53nd∞y9(∞9y(ε&.C!!"Hλ∧∧L(∧∧λλ¬E
εελλλ∧∧λ∀qλX1∩3D∧λ∃~T_{|LT→→8,M≠xzd→=→,>≠|H
<c"D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∀_{≠l=h≤Y.≡9<⎇∧
;KC!!"Hλ∧∧LH∧∧λλ¬ELεελλλ∧∧λ∀qλX1(∧∧λ⊃→,≤≠≠xm4λλλ={Y~.M;{H∧∧λ≤⎇
≥≠β"D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ←~<⎇∞4~9H
8⊃01	→H≤⎇
≥≠λ≤l↑C"AQHλλ∧εLhλ∧∧λ¬F,ε∧λλλ∧∧⊃PR)jλλλ∧∧∃~→$∧~[xD∧λ~_.4λ_(∧∧→X<nDλ_X-lβ"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ≥∞,;\yL↑Hλ~-dλλ≤∞-y|Y.>kHλ∧
y9#!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧
y8⎇
≥{H&¬C"C!$λλλε&λλλ∧∧εFλ∧∧λλλ∧λPQ4J∧λλλ∧
~→(∧
[xH
9λλ≥H→<N-|Hλ
⎇H≥~Q"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ≠_.>λ→X.>λ_X-lλλ≥∞,;\yL↑KHλ
<9#"D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ
<8⎇~-⎇H,¬a"C"D∧λλFTλλλ∧εFελλ∧∧λλλλhRUu∧∧λλλ
M→(λ
-xHλ
≡hλ≥l≥=~;Ltλ→[n$≥~→!QHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧≠_<nDλ→X.>λλ_L≥Yλλ∞NX;\ll<Hλ∞Mc"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ→M≥Z<z¬a"C"D∧λλFgLN(∧ε&vλλ∧∧λλλ∧∧λλλ∧∧λλλ¬∞;]<l\
#"AQHλλ∧εl∞LfTλ¬Fmhλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧∩[xD
];8L↑H≠yD∞~~<d
[xIn4≥<≤↑C"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ≤l\{9;NEλ~9D;↑.d∞~~<dZ9;D~<c!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∂ if the job has no upper.
SWITCH          [OP=047, ADR=20]  CALLI 20
--------------------------------------------------
        SWITCH AC,


The  SWITCH UUO  returns  in AC  the  current setting  of  the PDP-10
console data switches.
CALLIT          [OP=047, ADR=400074]  CALLI 400074
--------------------------------------------------
        MOVE   AC,[<UUO opcode, CALLI number or UUO mnemonic>]
        CALLIT AC,


The CALLIT  UUO is  used to find  out the  opcode corresponding  to a
given UUO mnemonic or  to find out the  mnemonic for a UUO  opcode or
CALLI number.  AC should  contain the opcode, CALLI number  or sixbit
mnemonic of the UUO you are intererβiKH↓S\\@↓)QJAIKgkYPASfAIKike9KHAS8~∃βεhAM←d↓++≡@↓[]K[=]SGf0AiQJ↓←aG←⊃JASfAeKiUe]KHQR]J8XAB@↓MkYXfl[E%h~∃S9giek
iS←\↓S]GYUIS]N↓eKYKYC]hA¬εA←d↓CIIe∃gfAM%KYIf$vAM←HA++≡↓←aG←⊃Kf~∃QQJA[=ghAgAKGSM%FAgSaEShA5]K[←9SFASLAeKiUe]KHQJ]N8XA←a
←IJ@@jb``@XX`~)eKikI]f@O%≥π⊃%\NAC]⊂@`jb@h`XX@AeKiUe]f@≥∨+)π!$NRX↓k]YKMfAESP@bn@ bXX`4∃ESh$AoCf↓←\A←ISOS]¬YYrA%\AiQ∀AβεX↓S\Ao!SGPA
CgJAQQJ@A≥K]Ke%FA[]∃[←]S~∃SfAeKiUe]KHQJ]N8X@A←AG←IJ@`jb@`bXX@AeKiUe]f@O))3U+≡NRl@AM←HAπβ→1∩~∃]U[EKeLXAiQ∀@AgSaEShA
β→_A9C[J@↓SfAe∃ike]∃H@QJ9N\X@`XXh@```f↓eKikI]f~∀≥'!π/≥≡NR\@A∪LAiQJAOSm∃\@A[9K[←]%FX@A=aG←I∀@A←dAπβ→1∩@A]U[EKdASf~)k]IK→S]KH0AuKe<ASfAIKike9KH\~(~∃)Q%fA++<Ao←e-fAEr↓MSegP@AGQ∃GWS]≤AESiL@bftDl@PfXXX`A	SifR↓S\@AQQJAβ\~∃∪_AiQKMJAESQfACe∀ACYX↓uKe↑0@AiQ∀ACeOU[K]h↓SfACMgk[K⊂Ai↑A	J@AC8A←aG=IJ~∃U]YKgLAShA%f@O∪8NXAo!SGPA%f@AQ¬]IYK⊂ACfA∧AgaK
SCXA
CgJAQ↑@Ae∃ike\↓iQJ~)G←ee∃GhAe∃gkYhl@ASL↓C]rA=L@AE%if@bLtblA%f@A]=\[uKI↑XAi!J@ACIOk[K9hASf4∃CggU[KH@↓i↑@A	JAB@↓gSqE%h@A[9K[←]%F\@A¬YX@A%eeKY∃mC]hAMSK1If@A%\AiQ∀~∃Ce≥k[K]PA[kgPAEJAiKe↑AQ↑ACm=SHAG=]Mkg%←\\~(→')A$d@@@@@@@A7∨@z`hn0Aβ	$th```Te:@A
β→→∩h```Td~∀Z4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZ~(@@@@@@A≠=-
@@↓βεY6qae←hxXXye∃Y←F⎇t~∀@@@@@@↓')!HdAβε0~∀@@@@@@yKee=dAeKQke\|4∀~∀Q1←nA←IIKdA	ShA←_@yae=h|A←8A[KC9fAoe%iJAaI←iKGP@EkaAKdAg∃O[K]PvD~∃1←nA←IIKdA	ShA←_@yeK1←F|A=\A[K¬]f@yIKY←FxASfA%\AeK1CiSm∀A[←I∀\R~∀4∀~∃)!J@A'∃)!$d↓++≡@↓gKif↓s←kdAgKG=]HAaI←iKGQS←\←IKY←G¬iS←\AeKO%giKd↓S\~∃=eIKd↓i↑Ag%[kYCQJAiQ∀Aa←gMKggS=\A←L↓C\AkAaKdAMKO[K9h\@AQQKeJACeJ↓io↑~)akea=gKfA→←dAI=S]N@↓iQSfhAiQJ↓MSegP@ASf↓i↑AC1Y←n@↓s←jAQ↑AY←=V@ACPAC]r4∃aCePA←L@↓G←eJ0AaCeQSGkY¬eYrA¬h@Ai!JA[←9Si←d0AKMM%GSK]QYrv@↓iQJAMKG←]⊂~∃akIa←gJ↓SfAi<AK]C	YJAs=kdAU=D@Ai<ACIIIKgfAACehA=LAs←UdAG←IJ@AS5COJA¬f~∃S_AShA]KeJA%\AC\↓kaaKHAgKO5K]h@!CIIe∃ggKf↓←mKdh```@`RAKYK\Ai!←kOP↓Sh~∃%g\Oh8@A)Q∀AiCE1J@AS8Aβaa∃]ISpfAiK1Yf@A]QKeJ↓S\Ai!JA[←9Si←dAs←j↓GC\~)MS]H↓mCeS=kfAS9iKeKMiS]N↓aSKG∃f@A←_AgsgQKZAS9M←e[¬iS←\↓oQSG @As←TAGC\4∃CGG∃gfAEdAkgS9NAiQ%fA++<\~∀~)≥∨)
hAβ]r↓CiiC
QKH@↓kaaKHAgKO5K]h@!eKCXA←dAMS[kY¬iKHR↓iQChAs←j↓QCmJ4∃oSY0@AEJ↓WSYY∃H@Ao!K\As=j@AO%mJ@AQQSfAU+≡\@A'KJ↓'KGi%←\@@T@A←\↓kaaKH~∃gK≥[K]iL\@Aβ1g↑XA	←iPAQQJA%∃'(AU+≡@QMKJAa¬OJ@dT`RAC9HAiQ∀A	)M∞A+U≡~∀QMKJAa¬OJ@bThRAk9I↑Ai!JAKM→KGhA=LA'Q!$d\4∀~∃βP@AiQ∀@AiS5J@Ai!Sf@AU+≡@A%f@AG¬YYKH0@AβεAeSO!h@Ag!←kYHAG←]QCS\AQQJ~∃IKY←G¬iS←\As←jAoSg Ai↑@↓gS[k1CiJ@↓C]HA¬ε@AY∃Mh@AMQ←kY⊂@AG←9iCS\↓iQJ~)ae←i∃GiS←8As←j↓oSgP↓i↑Ag%[kYCQJACf↓C\AkAaKdAMKO[K9h\@A→keiQ∃e[←e∀XASL4∃iQJ↓Y←n@↓←eIKHAEShA←LA¬ε@AY∃Mh@Q	Sh@@DnZ[i!J@bX0`@AE%hRASL@A←\0As←kH~∀EkAaKdAMKO[K9hDAo%YXAE∀AoeSQJAae=iKGi∃HvAC9HASL↓iQJA1←nA←IIKd@↓EShA=L~∃βAeSO!h@QE%h@fj4[iQJ`XXb↓EShR↓SfA←8XAiQ∀AeKY=GCiS=\@AgAKGSM%KHAo%YX~∃	J@ACMgk[K⊂@AeK1CiSm∀Ai↑@↓s←kdAG←e∀AS[C≥JZ[i!Ch@A%fX@Ae←kd@↓←o\AQekJ~)eKY←
CiS←8AG←]MiC]h↓oSYXAEJA¬IIKH↓S\@AQ↑@ye∃Y←F|↓EKM←IJ@Ag∃iiS]≤AiQJ4∃gKG=]H@AAe←h←IKY←F↓eKOSMiKdZ5C]H@↓E←iPAiQJyeKY=F|@A¬]H@@qae←hxA[kgP~∃sS∃YHAC⊃IeKgMKfAS8As←kHAG←e∀AS[C≥J\@AUa←\AMkGGKMfXAi!SfA+U≡AiC-KfAi!J~∃g-S`@AIKike8v@AS_@As←Ud@Ae∃ckKgP@Aga∃GSMS
CiS←9f@ACIJ@AS5a←gg%EYJ@↓i↑~∃MCiSg→rXAi!K\Ai!JAISIKGh@!Kee←HRAeKQke\A%fAiC-K\\~(~∃∪LAs←jAOSm∀@AC\ACEg=YkiJ@yeK1←F|A¬]H@Ae←j@A⊃↑@A]=h@AQ¬mJ@AQQJAβ
.~∃aISmSY∃OJX@↓s←kd@@EkAaKd@↓gKO[∃]hD@AoSY0@ACkQ←[Ci%GCYYd@@AE∀@Aoe%iJ~∃Ae←iK
iKH\A
S]¬YYrX↓iQJAMsgiK4AoSY0ACIUUghAi!JAmC1kKfAe←jAgAKGSMdAS\~)βεAi<@@c⊗↓E←k]⊃CeSKLv@AM=d@ye∃Y←F|AiQJ↓Y←n@↓←eIKH@zb`AESiL@P`X0bnnn4∃ESiLR@Ao%YXAE∀@AikI]KHA=MLX@↓C]HA→←d@@qae←hxAiQJAY←n↓←eIKH@@zb@AESiL~∀Pb\nnXX@AESiLR@Ao%YXAE∀Aike9KH@A=\\@AQQkfX↓B@@yAe←h|↓←L@hLdb@A]SYXA	J~∃[¬IJAS9i↑@j\nnXA¬]H@A∧@yeK1←F|A=L@fdD`@Ao%YXAE∀A[CI∀AS]i<@@d`@`XAo%iP~∃¬YXAi!SfAQ¬aaK]%]NAC→iKdAQQJ@AMsgiK4AQCf↓iCWK8A]←i∀A←LAQQJ@A1←nA←IIKd~)ESif↓←LAE=iPAβAYKMPAC]H↓βεAe%OQh\4∀~∃≥=nX@A%LAs←T@Agi%YXAI=\Oh@↓k]IKIgiC]⊂@QC]⊂@AKm∃\ASLAs←j↓I↑RXAYKh↓[J~∃∃qaYC%\AMkIiQKd8@A'kAa←gJAs←j↓oSgP↓i↑@A1←←VA¬hAGKIiCS\AY←G¬iS←]LAS\~)iQJA5←]Si=d@@Q→←dAo!CiKm∃dAeK¬g←\R8@@A3=jAGC8AkgJAiQSLA++≡A←]G∀AC]H4∃iQK8AI↑AMS[aY∀A≠∨-∃f@Q←HAiQK%dAKcUSmCY∃]hRAQ↑AOKPAiQJ↓S]M←I[CiS=\As←T~∃oC9h\@A→←dAS9giC]
JXAS_As←j↓o←kY⊂AYSW∀Ai↑AAkhAS9i↑AβAoQCQKmKdASfA%\~∃i!J@AgegiKZAChA∃1ε@↓Y←GCQS←\@dd`X↓s←j@↓GC\@↓KqKGUiJ@AQQJAM=YY←o%]N~∃MKckK9GJA←_AS]gQekGi%←]f\4∀~∀@@@@@A≠∨-M∩@@A¬εbXf\nnnn@@@@vyeK1←F|@t@`X@qae←hx@z@f\nnnn4∀@@@@@@AETPR2  AC1,            ;make the first 128K of core
                                ;  into your "upper segment"
        HALT                    ;halt on error return
        ...
        MOVE    AC,400220       ;get whatever is in EXEC 220
        ...

The relative mode use of this  UUO allows you to write code as  if it
were going to run as a second segment, and then to execute it without
making it into a second segment, provided you have used this UUO with
the relative  mode bit set.   You could even  do overlays  bp∩↓dβ↔π&K;≤4V;?SF+IβCN+∂∃β}1β∂?&)1βπg≠=β←⊗KSS↔rβS=β↔+9βπ~β¬βO.≠?;⊃αβO↔∨n+;Q1εK;S<hSS#∃αβOπ7*↓βC3∞≠∃9↓ααS#∃αβπO*βπ∪∪⊗+OM↓ε{→↓β&C∃↓β≡+∂?;"↓βO↔>k↔;Qε≠?∪∃`h+#?>+[↔IbβO#?.c⊃β*β?9β
↓↓F-ε∪?W;&Keβ␈⊃βg?*β7'∨G!β∨↔"↓β∂?v3WO↔"βπ?/ 4+←FQβ'~β#πCε+;';:p4(2≡⊗%αII↓α↓↓↓↓α↓↓αn⎇↓uAQ:aαε∩∪iQAAβ)Nu↓∧~ε22J↓QAAβ)L4)ji555ji555ji555ji555ji555ji555ji555ji555ji555ji554hQ↓↓↓α↓↓↓α<*RBI∩αε
0hP4(4U##∃α<*RBI∩↓αVVzβ'M↓π+O↔⊃π#=β≠/#∂!↓π##∃βπ∪?S↔∨#'?9␈∪↔3?≡S'?r↓β?→πK?WHhSO'7.cπS↔"βWCC/⊃βO↔>k↔;Qr↓αS#*βCK?&+∂S'}qβ'Mπ∪↔SW⊗s↔⊃βNqβS#*β3↔≠"β#π30h+?→∧

m↓ε∪'Q↓9↓!EbaA↓β⊗KQ%βO→β?9αβ'→β∞≠∂↔O~βS=↓π##∃β≡+∨7↔w!↓β'~β←K'&(4+C⊗{S↔∂&+⊃9↓¬##∃β⊗+3?∂∂#'?9εKMβK/#WK;.!↓β'rβS#∃π∪'∨#"β#π32β?→↓∧

mβ⊗KP4)≠)↓↓!αa1Eβ⊗KQ%↓εKMβ?r↓β'→π##∃↓π∪↔3?≡S'?rβ'M↓εK9βK.cπS'6)↓β7}#∃9↓¬≠↔∀4U~⊗RB∪⊃βπ␈3∃β≠␈⊃βπ9ε+cC3∞sπS'}qβ?→π≠'7WfS↔⊃π+CC↔∩βO↔∨n+;SMph(4*N1βg?*β∪=βv{Q↓βF[∃β
βO'7.cπS↔"βO↔∂}s⊃↓β≡+∨7↔w!βπQπ##∃β&K7∃↓πK?Uβ≡304W##'M¬*V=↓F3?Iβ/Cπ7Cf)1β'2βg?UεCπ[∃ε	βK↔∞aβO↔≡{;⊃β≡+∨7↔w!%1↓π##↔9πS↔K<hS'Mβ⊗+SWKv+⊃β'rαε
8hP2B⊗,Y↓↓↓α↓↓↓↓α↓↓αn⎇↓uAQ:aαε∩∪iMNuαα∞ε2dI↓MLhQ555ji555ji555ji555ji555ji555ji555ji555ji555ji555jh4)↓α↓↓↓↓αα6>Z,Iαε
ccπO}cWS∃ε∪∪K/≠Mβg␈)β←πw!βS=εc??-εQx4R↓↓↓↓α↓↓αB,*-↓α→04(hP4*SF)αB⊗,YαVVzβ'Mβ/≠↔⊃β&yβ∨↔"βS#∃ε≠?;S.sSMβ}1βπ;JβπO}cWS∃αβ3?∂∂#'?9εK84+n+7?KJq↓αε~βO#?.c⊃β∂}sSπ'rβS#∃εO?g+S∃β∞#∪K↔∨→βg?*β←'OB↓βS=ε+cπ7Ns∃84U##∃β≡{;S↔w#M↓β}1βS#∂!↓βπ&#K↔O~β←'3b↓β∃π∪↔SW⊗s↔⊃↓εK9αε~q↓↓α∂βC↔;&Ka↓LhSS↔3g→β←#/∪∃βg␈)β∂πr↓β≠'v!βO?n)β';&+K↔O&K;≥β∨KOS↔jβ';≠␈∪7πSN{9↓βNqβS#(h+7?vKS?Iph(4*&C'M↓¬*V=βFM↓β⊗+↔9↓εcπK∨.ceβK/β3π∂.!↓βJβS#∃ααN⊗R¬⊃I↓α-*=↓#/CC3πNs↔⊂4V?[*I1β←FK∂!↓εkπ/↔~β↔cπnK;';:↓β7↔n{Keβ␈+SO'&)↓βg␈+Iβ∂␈∪∃↓βNkπ∨∃εkW∂ hS7?K*↓β↔≠6K∂'↔w!9↓αF{←↔[/⊃1↓βN1βg?*↓β#π6)βπ9αβWCC/⊃βO↔>k↔;Qb↓βg?*β7WO h+∪↔&∂!βO!βS=π+O∃β&C∃αN-"BII¬*V=β↔+Qβ;␈!βS=π+O∃β&C∃αB,*-αV,y84(1↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓¬~⊗∞RLz9↓]jj&:R-⊃6*>∩α6ε&bαNfN$*44(hP4*SF)β';&+I7+}⊃↓β7∞K1βOO≠S↔5αβCK?6K∪↔⊃ε∪eβSF)↓β7}s'S?∩βπ33␈;M↓↓k→Iβ←␈∪⊂4+f+SS↔↔→βS=αβ∃βεOO↔"↓β↔';↔↔9εS?Mr↓α↔π≡A↓β+}⊃β'9αβS#∃π≠gOS.i↓β#∂→β∧4Vkπ'3⊗{aβ←FK∂!β≡9β#}c⊃β↔F∂S3Jβ?;∃βiMIβ>{K⊃βf+SS↔∩q↓α≠␈⊃β¬↓εc↔SS/⊃βS<hS∃β≡+;Q1π##∃β≡+;∪'v9β+?∩β'∪↔w#'≠'/→βS#*β∪↔O&K;πSN{9β+}⊃βeε+'S#/⊃βS#(h++?∩β;W7⊗+I↓β␈⊃βS#*↓βO'F∪'QβV{	β;∞k∃9↓ααS#'~β∂πW≡+M↓β&C∃β3/#S↔IαβS=β⊗(4+Cf∂↔⊃εK9βSF)β7πNc?aε{→↓β&C∃β∪/≠S';∂#'?9εS?	1π;#=β≡9βSF+9↓β&/∃β&C∀4+f+SS↔∩β?WQε{→β#O→β?←rβ7π'f∪?a↓FI;∃9bβK↔∂.K[∃β&C∃β3/#S↔IJ↓β←#.s↔[↔∩β#∀4W;π;S~q↓α←FK3∃↓ε	β+?∩;Mβ7∞K3?B↓β'Mε3W31αC#?3&K;≥↓ε	β3↔'#↔I↓εC∃β#∂≠9∨PhSK↔π"βg↔QJaβ;=ε{;∃β≡9βO.s⊃βSFQβ+}⊃β¬βf+SS↔∩p4(4Tr>R∃RαS#∃ααJ⊗N-!αVVz↓↓#O.)βCπ>)↓IUαI↓β←Nc1β∂∂+O∃↓ε;eβf+SS↔∩↓β'9πK?WHhS7π'f∪?aβ&yβ∃π##K?>qβπ←∂I84(26εLa↓↓↓α↓↓↓↓α↓↓αn⎇↓u]E¬h4)5ji555ji555ji555ji555ji555ji555ji555ji555ji555ji544R↓↓↓↓α↓↓α6J1↓s7+;∂SN{9y2"H4(hP4*SF)α6εLaαVVzβ'Mβ∞qβ↔c&+;∪↔"↓αVVzβS#π"βWO↔~βS#∃∧

β≠N+3⊃↓π#=β∪/#↔K7Ns∀4+>C'∂!ε{→βO/3↔Kπbβ7π'bk#π;&c';≥ε3W;∂&K?;MεKMβSzβ∃β/C↔∂W&+⊃9↓αα↔π∂Bβ?_4W##↔O*β≠W;∨#'?;~β'Mβ&+O∂KN∪↔⊃↓π≠↔Cπ⊗S↔3Jβ↔3␈99↓αv{S'∂*βS#π"↓α6εLaβ'LhSπ9αLzQαV,yβπ;"β#↔;≡)β∂πvs?Qβ⊗)β∨'6+9β←F+9βSF)βCK};Kπ5εKM↓βNqα&>"jVN⊗⊂h+7?&)↓#←FK∂!βO→β↔cεcπ';.!β'9∧CC↔v#'a↓
I84(1↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓]s	↓αO.s∪';:α7π'`h(4(hRS#∃ε3?33␈;';≥π#←=α-*?Mβ∞c3?]πK?Uβ&yβO↔v!β¬βf+SS↔∩βS=β∞seβ+}⊃84(SEND            [OP=710, AC=0]  MAIL 0,
--------------------------------------------------
        SEND ADR
        <error return>

ADR:    <destination job name or number>
        <address of =32 word letter to be sent>


The SEND UUO is used to send a letter to any job in the  system.  The
effective address of the UUO  should point to a two-wop¬⊂@AEY=GV\@↓)QJ~)MSegPAo←e⊂A←LAQQSfA	Y←GV↓gQ←k1H@AE∀AiQJ↓U←DA9k[EKHA←dAQQJ@AMSqESPAU←D4∃]C[∀A←LAQQJAU=DAi↑↓oQSG @AiQ∀AYKiQKdASLAi↑A	JAgK9h\@AQQJ@AMKG←]⊂Ao←e⊂~∃←L↓iQJA	Y←GV↓gQ←k1HAG←9iCS\↓iQJA¬IIeKMfA←L↓iQJ@tfdAo=eHAY∃iiKd8~∀~∃%LAiQ∀AYKiQKdASLAgkG
KggMUYYrAMK]hX↓iQJAMWS`AIKike8ASfAQCWK\8@A∪L↓iQJ~)IKgi%]CiS=\@AU=DACYIKCIrAQCf↓B@AY∃iiKd↓S\@A!SfA[¬SYE←`@@Q[∃C]S]≤AiQJ4∃YKiQKdAG¬]]←hAEJAMK]hA¬h@Ai!SfAi%[JRX↓iQJ@↓ISeK
h@QKIe←dRAeKiUe\ASL~∃iC-K\\@↓∪LAi!KeJA%fA]↑↓U←DA]SiPAQQJA]¬[JA←HA]k[	KdAs=jAOSYJX@Ae←jAO∃h~∃i!JAgsMiKZA∃ee←d↓[Kgg¬OJA≥=≤[0↓∃∨∧A9β≠
A=$A≥+5¬$\A∪LAQQKeJ↓CeJAQo↑~∃=dA[←IJAU←	f@Ao%iPAi!JAU←λ@A]C5JAs←TAOSm∀X@As=jAOKPAiQJAgsgQKZAKIe←d~)[Kgg¬OJAβ5¬∪∂+=+&A∃=∧@A≥¬≠
\@↓/SiP↓KSiQ∃d@A←_AiQKMJAYCMh@Ai]↑AKeI←efX4∃s←kH@Aae=OeCZ↓oSYXAEJ@↓gi←aAKHAC9H@As=j@Ao%YXAE∀@AaKI[Sii∃H@Ai<Aisa∀~∃π∨9)∪≥+∀XAoQ%GPAo%YXAG¬kgJAQQSfAU+≡Ai<AEJAQeSKH↓COCS8\~∀→'↔!M≤@@@@@@@A7∨@znb`0AβεzU:@A≠¬∪_@j0~∀ZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZ~∀@@@@@A'↔A'≤A¬	$~∀@@@@@@ye∃ike\↓M←dA⊃KgiS9CiS←8A[CS1E←pA→kYX|4∀@@@@@@@qeKikI\AM←HAYKiQKdAgUGGKgMMkYYdAgK]P|~∀@@@@@@yeKQke\A→←dA]=\AKp↓U←DA9C[JA=dA]k5EKdX↓←dAC5ESOk=kfA]¬[J|~(~∃β	Ht@@@yU←D↓]C[J↓←dA]U[EKdx~∀@@@@@@yCIIIKgfA=L@zfHAo←e⊂AYKiQKdAi<AEJAMK]h|4∀~∀~))QJAM↔!'8A++≡↓Sf@AUgKHAQ↑AgK9HABA1KiiKH@Ai↑↓C]←i!KdAU=DAUkMh@ACLAiQJ4∃'≥⊂A++≡QgKJ↓CE←m∀RAI←∃fAKq
KahAQQChAQQKeJ↓SfAC8AKqiIBAeKQke\X↓oQSG ~∃Sf↓iCWK8AoQK8AiQKIJASf↓]↑@A)←DAo%iPAi!JAOSYK\A]¬[JA←HA]k[	Kd@A=dAoQ∃\~∃i!KeJA¬eJ@AQo↑A←H@A[←IJAU←	fAoSQP@Ai!JAOSYK\@A9C[J\A)QkLX@Ai!KeJA¬eJ~∃QQeKJ↓a←gg%EYJAIKike9fAiQ¬hAiQ%fA++<AGC\↓iCWJ8@A)Q∀AISe∃GhAe∃ike\Q]↑~)gWS`$ASf@↓iCWK8ASLAQQJ@A1KiiKHAGC]9←hAE∀@AgK9hAEK
CkgJAiQJ↓CIIe∃ggKJ4∃CYe∃CIrA!CfAB↓YKii∃dAS\↓QSfA5CSYE=p\@AQQJAg-S`Ae∃ike\↓SfAi¬WK\A%LAiQ∀~∃YKQiKd@↓SfAgUGGKgMMkYYd@AgK9h\@AQQJ@A⊃←kEY∀AgWS@@AeKQke\A%f@Ai¬WK\A%L~∃i!KeJA%fA]↑↓U←DA]SiPAQQJAO%mK\A9C[JA=dA]k5EKdA=dASL↓iQKe∀ACeJAio↑↓←d~∃5←eJA)←EfA]SiPAQQJAO%mK\A9C[J\4∀_@@@@@@@@@@@@@@@@@@@@n\dA%KG∃SmS]≤A≠CS0~∀~∀4∃)QJ↓M←YY=oS]N↓io↑@↓++∨f↓CYY←\As←j↓i↑@AIKGKSYJA[C%XAgK9hAi↑As←j0AiQCP~∃Sf0Ai↑A!CmJA∧AYKiQKdAe∃[←mK⊂AMe←4As←kHA[CS1E←pA¬]HAI∃a←gSQKH@A%\As←Ud~∃G=eJAS5COJ\4∀→/%πX@@@@@@@@@A7∨@znb`0AβεzE:@A≠¬∪_@b0~∀ZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZ~∀@@@@@A/%
,Aβ	H~∀~∃¬	$t@@@yE1←GV@tfdAo=eIfA1←]NAQ↑AeK
KSmJ↓BAYKQiKd|4∀~∀~))QJA]%π,AU+≡Ai¬WKf@↓iQJA1KiiKHXASL↓C]rXAiQCPASfA%\As←Ud@A[¬SYE←`AC]H4∃aYC
KfASPAS\AQQJ@zLdAo←IHAEY=GVAgAKGSM%KHAEdAiQJ↓KMMK
iSmJ↓CIIe∃gfA←_~∃iQ∀A++≡8@A∪L↓iQKe∀ASfA9↑AYKQiKdA%\As←UdA[C%YE←p0AiQSLA++≡↓oCSiLAk]i%X~∃g=[K←]∀AgK]⊃fAs←TA←]J↓C]HAQQK\A≥SmKf↓ShAi<As←j8~∀→'%πX@@@@@@@@@A7∨@znb`0AβεzI:@A≠¬∪_@d0~∀ZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZ~∀@@@@@A'%
,Aβ	H~∀@@@@@@yeKiUe\AS_A]↑A1KiiKHASfA%\As←UdA[C%YE←px~∀@@@@@@ygkG
KgfAIKike8|~∀~)β	$t@@@y	Y←GVzfdA]←eIf↓Y←]N↓i↑Ae∃GKSm∀ABAY∃iiKdx~∀~∀4∃)QJ↓'%π,↓++≡A
QKGWLAi↑AMKJAS_AiQKIJASf↓BAYKQiKdA%\As←Ud@A[¬SYE←`\@A∪_~∃iQ∃eJASLA←]J0AShA%fAeKQke]K⊂Ai↑Ae←jAS8AiQJzfdA]←eHA	Y←GVAa←S9iKHAQ↑~∃EdAiQJAKMM∃GiSm∀ACIIIKgf@!β	$RA←LAQQSfAU+≡@A¬]HAi!JAgW%`@Ae∃ike\↓Sf~∃QCWK\8@A∪L↓iQKe∀ASfA9↑@AY∃iiKd↓S\As=kdA[¬SYE←`XAiQ∀AISe∃Gh@AIKike8ASf~)iCWK8AC]H↓iQJA	Y←GV↓ChAβ⊃$ASf↓k]i←UGQKH8~∀_@@@@@@@@@@@@@@@@@@n8f@A!∃KWS]≤AChA5CSYE=qKf~(~∀~∃QQJAM=YY←o%]N@AQo↑A+U∨fAC1Y←n@↓s←jAQ↑@AM%]HA←UhAoQ∃iQKdABAU=D@AQ¬fAB~)YKii∃dAS\↓SifA5CSYE=p\~∀SKPME           [OP=710, AC=3]  MAIL 3,
--------------------------------------------------
        SKPME
        <return for your mailbox empty>


The SKPME  UUO tells you  whether or  not there is  a letter  in your
mailbox.  If there  is a letter there,  the skip return is  taken; if
not, the direct return is taken.
SKPHIM          [OP=710, AC=4]  MAIL 4,
--------------------------------------------------
        SKPHIM ADR
        <return for his mailbox empty>

ADR:    <name or number of job you are interested in>


The SKPHIM UUO is used to find out if a given job has a letter in his
mailbox.  The job  number or sixbit job  name of the job  of interest
should be  in the word  pointed to by  the effective address  of this
UUO.  If that  job has a  letter in his  mailbox, the skip  return is
taken; if his mailbox is empty, the direct return is taken.  If there
is no  job with the  name or  number given, you  will get  the system
error message NON-EX  JOB NAME OR NUMBER.   If there are two  or more
jobs with  the job  name given, then  you will  get the  system error
message AMBIGUOUS JOB  NAME.  If either  of these two  errors occurs,
your  program will  be  stopped and  you  will be  permitted  to type
CONTINUE, which will cause this UUO to be tried again.
                      SECTION 8--SPACEWAR MODE


In a timesharing system the available CPU time must be split up among
all the programs that are trying to run.  Any one program will be run
only for  a short period  of time,  then stopped for  a while  to let
other  programs run,  then  run a  little more,  etc.   The intervals
between, and durations of, the times when a program is allowed to run
are  generally  irregular and  depend  on the  system  load.  Certain
programs  require fairly  regular service  (in the  form of  CPU time
allocated)  in order  to operate  meaningfully.  The  system provides
spacewar mode to assure regular service to such programs.

To use spacewar mode, a job tells the system the starting  address of
the spacewar module (process) and how often and on which processor(s)
(PDP-10, PDP-6) it  should be run.  A  spacewar module is  a separate
process  from your  job's main  process (the  one that  initiates the
spacewar  module) but  runs  in the  same core  image.   The spacewar
module will be restarted at  a fixed interval after it  last stopped;
you specify this interval  when you initiate the module.   A spacewar
process cannot quite be guaranteed of running every so often because,
for example,  another spacewar  process on  the same  processor could
have conflicting time demands.   After you have initiated  a spacewar
module, your job's main process can continue doing whatever it wants.
You are allowed to have one spacewar module active on each processor;
i.e., you can have one on the PDP-10 and another one on the PDP-6.

While you have a spacewar module active, your job usually will not be
swapped out although it may be shuffled to a different place in core.
Before  your job  is either  shuffled or  swapped out,  your spacewar
module will be warned that it is not going to be run for a  while; so
it can take  whatever precautions are  necessary to see  that nothing
bad happens while it is away.

Each time  a spacewar  process is started  up, it  is allowed  to run
until either it signals by the  DISMIS UUO (see page 206) that  it is
done or it times out.   Normally a spacewar process will time  out if
it runs for more that  half a second during a single  activation.  If
you set the timeout-suppression bit (see the SPCWGO UUO below)  for a
spacewar process,  then that process  will never time  out.  However,
running for very long (like more than a few milliseconds)  will cause
system  performance  to  deteriorate  noticeably,  especially  if the
process is running on the PDP-10!  In fact, a spacewar module running
on either processor for more than about half a second will  cause the
other processor to think that the first processor is dead.

If  a  spacewar  process  makes  an  illegal  or  non-existent memory
reference,  or if  it  gets a  push-down overflow,  then  the message
SPACEWAR LOSSAGE  will be typed  on the job's  terminal and  both the
spacewar process and the main process will be stopped.  If you try to
initiate a  spacewar process when  one is already  active, or  if you
indicate that a spacewar process  should be run on the PDP-6  and the
PDP-6 is not running, or if one of your spacewar processes times out,
then you will get an  error message and your spacewar  processes will
be killed.

Spacewar  modules  are  started in  IOT-USER  mode;  this  means that
operation  codes 700:777  are  machine I/O  instructions  rather then
UUOs.  Thus a spacewar process can do its own I/O  directly; however,
it should  make sure that  its use of  I/O devices will  not conflict
with  the system.   For more  information on  IOT-USER mode,  see its
description in Appendix 1.

Spacewar modules running on the PDP-6 can never execute  UUOs (except
for the DISMIS UUO to terminate the current activation).  Any attempt
by such a process to execute a UUO will result in termination of that
activation (as  by DISMIS).  Spacewar  modules running on  the PDP-10
are allowed  to do  certain UUOs.   However, a  UUO that  attempts to
reference any accumulators will  never access the correct set  of ACs
(whether the AC is referenced as an AC or as a memory  location); and
a UUO that returns results in the ACs may in fact return  the results
in the ACs of the job's  main process (if the main process is  at UUO
level), thus clobbering whatever  the main process had in  its AC(s)!
Furthermore, any UUO that must wait for something to happen  will not
work from a spacewar  module.  Finally, some illegal UUOs  will cause
the SPACEWAR LOSSAGE message  to be printed and the  spacewar modules
to  be  killed.  With  those  warnings in  mind,  note  that spacewar
modules on the PDP-10 can in general do any of the IOT UUOs, that is,
those  with opcodes  over 700  (including the  display UUOs)  but not
until  the  process  gets  itself out  of  IOT-USER  mode!!   See the
preceding paragraph.

Each  time a  spacewar process  is started  up, the  system  loads up
several accumulators with data  that might be needed by  the spacewar
module.  The ACs set up and the data they contain are listed below.

    AC     CONTENTS

    1      The current  value of the  spacewar buttons.   See the
           SPWBUT UUO on page 261.

    2      Your  current  protection-relocation  constant.   Your
           protection  constant  is  in the  left  half  and your
           relocation constant is in the right half of this AC.

    3      A warning value.  This AC usually contains zero but is
           set up with -1 if this is the last time  your spacewar
           process will be run  for a while (because your  job is
           being swapped  out or shuffled).   The next  time your
           spacewar module runs, this AC will contain  the number
           of 60ths  of a second  for which your  spacewar module
           was suspended.

    4      The number  of the processor  this spacewar  module is
           running on.  This number is 1 for the PDP-10 and 2 for
           the PDP-6.

    5      A  flag indicating  the status  of the  processor that
           this spacewar process is NOT running on.  This flag is
           zero if that  processor is running (normal  state) and
           -1 if that processor is dead.

    6      Your job status word.  See the JBTSTS UUO on page 185.
           If the run bit (bit 0--the 400000,,0 bit) of this word
           is zero, then your  main process has stopped  for some
           reason; for instance, control-C may have been typed.

If you initiate a spacewar process with the time between runs  set to
zero, then the process will be run only once.

Whenever you do a RESET  (see page 250), any spacewar  modules active
will  be killed.   The EXIT  UUO (see  page 248)  will also  kill any
spacewar modules you have.  Finally, the SPCWAR UUO can also  be used
to kill your spacewar modules; see below.
                         8.1  Spacewar UUOs


Here are the UUOs used to initiate and to kill spacewar processes and
to terminate spacewar activations.
SPCWAR          [OP=043]
--------------------------------------------------
        SPCWAR <number of ticks between startups>,<starting address>


The SPCWAR  UUO initiates a  spacewar process on  the PDP-6.   If the
PDP-6 is not running, the spacewar process will be run on  the PDP-10
instead.  The effective address  of the UUO is the  process' starting
address.   The  number  of  60ths of  a  second  between  startups is
specified  by the  AC field  of the  instruction (possible  values of
0:17).  If the  AC field is zero,  then the spacewar process  will be
run only once.  Timeout  suppression is not possible with  the SPCWAR
UUO; any process started with this  UUO will time out if it  runs for
more than half a second during a single activation.

If  the effective  address of  this UUO  is 636367  (that's  'SSW' in
sixbit) and the AC field  is zero, then instead of a  spacewar module
being initiated, all your  spacewar modules will be killed.   This is
the normal  way to kill  spacewar modules.  The  RESET UUO  (see page
250) and all flavors  of the EXIT UUO  (see page 248) will  also kill
your spacewar modules.
SPCWGO          [OP=047, ADR=400003]  CALLI 400003
--------------------------------------------------
        MOVE   AC,[<Bits  0:1  (600000,,0 bits)= processors;
                    bits  2:3  (140000,,0 bits)= timeout suppression;
                    bits 14:17 (000017,,0 bits)= startup interval;
                    bits 18:35 (0,,777777 bits)= starting address>]
        SPCWGO AC,


The SPCWGO UUO is used  to initiate a spacewar process on  either the
PDP-6 or the  PDP-10 or both.  The  starting address of  the spacewar
module should  be in  the right half  of the  AC.  Bits  14:17 (17,,0
bits) of the AC should contain the time in 60ths of a  second between
startups of the spacewar module.  A zero time means run  the spacewar
process  only  once and  then  kill it.   Bits  0:1  (600000,,0 bits)
determine  which  processor(s)  will  run  this  module.   If  bit  0
(400000,,0 bit) is a one, then the module will be run on  the PDP-10;
if bit  1 (200000,,0 bit)  is a one,  the module will  be run  on the
PDP-6.  If both bits 0 and  1 are one, then both processors  will run
this  module,  with each  processor  starting at  the  given starting
addreβ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂)baU$gg⊂∞VVjiQi⊂$g∃"i)*T*)FEβEεE*~2P:yYy⊂4w≥2y9:\:⊂⊂9↑yz2vH0v67]yP0P≤97sy_vP⊂:≠P:0uYP0qz~ww⊂⊂≥x7w⊂≥42FE≠qqzy≤2w1rH7s⊂0[<P7sλ;0y4[zyP9\2qtp[⊂1ww→4z4w[9V⊂;Zz47z]⊂⊂:4→P897Yy0vFB40{4[3P⊂:≠P:2y]⊂⊂1w[:4w:[zyv<H37y⊂λ:42yYP1ww→4z4w[9W⊂⊂λ*42y→P⊂0y→P:8πo
versions of  interrupts available--the old  style and the  new style.
The main differences between the two are0∀bRAo!SYJAe←jACIJAae=GKgg%]N~∃¬\A←Y⊂[gis1JAS]QKeekAhAs←TAGC\↓giSY0AEJA%]iKeIkaiK⊂XAoQ%GP@A
C\AG¬kgJ~)CYX@↓g←e`'→↓β?2βSK?.∪3∃1αβWQαβ←#'f)βg?*↓βπK*↓βCK}≠↔OONs≥↓β
β;↔]o≠Sg3(h+';&+KKWπ!βg?*β∂π;v{QβK.≠↔'[*βπ;?&C↔IβNsS↔K↔+CQβ.sS'1πK?U↓ε#'O7O≠MβSF(4+∂/∪K↔;"↓β?;+Y↓I%π##∃↓ε{;3eεK;S↔↔∪WCS~↓βg?*β∂π9αβK↔∂.K[∃β>KS!↓π##∃β}c⊂4+∨KOS↔jβπK∃πβK?∂/≠O?Iαβ';S/∪KWC'→βOW≡AβπMπβWO!n#?←9αβ?[↔⊗33?]bβ'33.;π04Vk↔7?/∩π⊗\lW⊗.l<Rαε≥lBε∂-≡FFn↑M⊗~ε}lW⊗6M}rrα∧⊗␈*<⊗rε≥N6zα]f∞⊗LTε6␈!Q&≡f|=2εNnLW↔↔↑∞G~π⎇≡FBπMRε}LDπ∨O>LVjb.W"ε⎇mGJε=Mv≡Z∞M⊗≡←4∞FF∂D
v≡∨↑!PW>
≥F*π≥}Rαε≡,Rε∞>NV∞fO∀π↔.mm⊗v:∧∞vNfD&*π<\Vrα/∩πN}↑"απ∞-v?⊗≥Ubα∧≥M@hV≥nF/↔.↑π'~≡&*α∞
w∨≡≤-F*π⎇≡FBα∞Mε*εl↑rαπ?≡7&.W4ε∞vD∧ε≡f|=2εNnLW↔↔↑∞G_h.⎇⊗fb
↔πε]dαπ>↑FF/$
w∩α
mw"π≥}Rαε≡Y$8⎇≥,≥≠≡(∧∞];[M≥Yh_.Dλ≥~T≥~;,UC"PL\[|Y${z;Ltλ~;NMh≠;n,(λ→
≤YY<L]Xy<dY=≥l\;Hλ∞M→(≠mL(λ≥Yλ≠L↑k<⎇∂≥→#"M≥]→<N.<≥≤eD∩(≤m;≠λ∧>≤≠≥;H≥
(_X.=8|h∧
yH≥
(~;NL<\].∞λλ≤o≡⎇→;$;Yβ!.~→(l8=≥.,<h≥
=λ_.,(≥~T≤x;,T→[|D[⎇~∧∞⎇≡;↑kC"AQP(≥.<<H≤∞-y|X-T~;Y
≤x<α2\P:40]⊂4z⊂≥pw:9H:7P:\rP:4→P4w:→y9:x≥⊂9|y]2vP1≡FE2w_q64w→P4z9Yv3⊂3≠y⊂:4→P⊂80\:4qz[0y⊂4[:2y9≥x:8β that it  is interested
in.  Interrupt conditions that are not enabled for will be handled by
the system.  For  instance, if you get  a push-down overflow,  and if
you are not enabled for push-down overflow interrupts, then  you will
get the system error message PDL OV.  If, on the other hand,  you ARE
enabled for this interrupt, then you will get an interrupt indicating
that you  had a  push-down overflow.   Some interrupt  conditions are
ignored by the system unless you are enabled for them.

When an interrupt that you  are enabled for does occur,  your program
is stopped, the program counter (PC) and PC flags are saved in JOBTPC
in your job  data area (see Appendix  2), the cause of  the interrupt
is  saved in  JOBCNI and  your interrupt  handler is  started  at the
address contained in JOBAPR.

The  PC  that  you  get  in  JOBTPC  generally  points  to  the  next
instruction that your main  process would otherwise have  executed if
the  interrupt  had   not  occurred.   However,  there   are  certain
conditions under which the value of this PC is not quite obvious.

First of all, if you were  executing a UUO (and hence your PC  was in
monitor mode while executing some system code for that UUO), then the
PC saved in JOBTPC will not  be your real (monitor mode) PC  that you
had at  the time of  the interrupt; instead  JOBTPC will  contain the
location of the  UUO call in your  core image, and the  user-mode bit
(bit 5--the 10000,,0 bit) in the  left half of JOBTPC will be  OFF to
indicate this condition.

Secondly,  when you  receive a  processor interrupt  (either  old- or
new-style) such as illegal  memory reference, the PC saved  in JOBTPC
will point to the instruction that caused the interrupt.  However, if
you  jump to  an  illegal location,  then  the PC  returned  with the
illegal  memory  reference  interrupt  will  point  to   the  illegal
location.  For instance, on  an AOJA 1,777777, the AC will  have been
incremented  and the  PC changed  to 777777  before the  ill  mem ref
occurs, so the PC stored in this case would be 777777.

Finally, if an interrupt occurs in  the middle of an ILDB or  an IDPB
instruction after  the byte pointer  has been incremented  but before
the  byte  has  been  moved,  then  JOBTPC  will  point  to  the byte
instruction  and  the  byte-increment  suppression  flag  (bit 4--the
20000,,0 bit), will be on in the left half of JOBTPC.  Thus  the byte
pointer will not be  incremented again when (and if)  the instruction
is resumed.

Each condition for which an  interrupt can occur is represented  by a
specific bit.  You enable a given interrupt by setting to one the bit
corresponding to that condition;  this can be done with  various UUOs
that will be described in  detail later.  When you get  an interrupt,
the bit representing  the cause of the  interrupt is given to  you in
the word  at JOBCNI.   For new-styO"q"PJ¬π=:.@4w3Pλ37xα
	λα∩$@@As<βUβSzβH∞.lDαεOD∩π≡⎇\Rαε≥nπ'"aQ HH"(∧∧∩=λ
\>(_↓→P;pt]ing for either a
				   character or a l↓S]∀\~⊂λhQ↓↓↓β1↓↓↓α↓↓QAεαbc∧∧ααα∧∧∧LuIX∀Lb∧∧¬≡}\]vv*∧
ε∂~
.W⊂≡λλ≤l]]λλ∂≥⎇(_!QHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧≠→=∞L<Hλ¬∞y9(
<8⎇~-⎇Hλ
e∃Hλ⊗-}#"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ≠,∨(λλ∞ 2pr⊂λ⊂:42H⊂⊂62]:2y⊂λ⊂0x∧
                                   ih
i∃eekaPAYKm∃X\~∀4∀@@@n@@@@@`	β↓A11α↓↓↓↓α↓α&:%:ε&Qα↓α¬α-:ε&Q¬*V=βFM↓βW+OQβ⊗+SWKv+⊂4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β7∪?5↓ε3';'≡C';≥αβS#∃ε+c↔∂/#'?8hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ?→β
↓αVVzq↓αg}αRαε<≥fv␈DVv∞-LPhR∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααεm}"απM
↔~ε≥nF/↔.↑π"b∧∞vFN=∧εO_Q$ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∞W≡.D∧ε↔J∞Mε*α
]vvOM}"απMtεn∞<QPRα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧απ&T¬-<→~Bα¬ZYrπ>}Zd∧
≤y,T≤_9lQ"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λL&U+C"AQHλλ∧πλλλ∧∧λ,εε∧∧λλλ∧∧∩3U

∪hλ∧∧⊂(∀
K(≡;nT≠⎇{D
_<↓P~:yz⊂λ7zz8≥zεE∧BDDP⊂λ0P1t_y0qz→y⊂37\⊂<wp∃ to read.

    9      400,,0        INTPAR    A parity error has occurred in
                                   your core image.   The address
                                   in   which   bad   parity  was
                                   detected is given to you in AC
                                   10.

    10     200,,0        INTCLK    A  clock  interrupt  has  just
                                   happened.      The     default
                                   interval     between     clock
                                   interrupts  is  a  60th  of  a
                                   second;  this interval  can be
                                   changed  by  the  CLKINT  UUO,
                                   which   also   enables   clock
                                   interrupts.   This bit  is for
                                   new-style   clock   interrupts
                                   only.   For  a  more  complete
                                   description of new-style clock
                                   interrupts, see the CLKINT UUO
                                   on page 213.

    11     100,,0        INTINR    IMP  interrupt   from  foreign
                                   receive  side.    See  Section
                                   13.13, specifically  page 318,
                                   for  explanations of  this and
                                   the following  three interrupt
                                   conditions.

    12     40,,0         INTINS    IMP  interrupt   from  foreign
                                   send side.

    13     20,,0         INTIMS    IMP status change interrupt.

    14     10,,0         INTINP    IMP input waiting.

    15     4,,0          INTTTI    [ESCAPE] I has just been typed
                                   on the display  terminal which
                                   is attached to this job.

    16     2,,0          INTQXF    Your  job is  changing queues.
                                   Your new positive queue number
                                   (see   the  queue   names  and
                                   numbers  in  Appendix   5)  is
                                   available from accumulator 14;
                                   see  page  208.   Note:   This
                                   interrupt is not guaranteed to
                                   be  generated  every  time you
                                   change queues.

    19     0,,200000     * POV     A push-down stack  overflow or
                                   underflow  has  just occurred.
                                   If  the   instruction  causing
                                   this  was ¬qλ.Oa  PUSHJ or  a POPJ,
                                   then the  PC stored  in JOBTPC
                                   is  the one  specified  by t↓QJ4∀@@@@@@@@@@@@@@@@@@@@@@@@@@@AS]gQekGi%←\@QA+'⊃∀$A←d@↓ErAi!J~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@AgQCGV@@@Q!=!∀Rv@@@A%L@@@↓iQJ~(@@@@@@@@@@@@@@@@@@@@@@@@@@@@↓S]giIkGiS=\@ASL@AB@↓!+'⊂A←dA∧~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@A!∨@X@Ai!K\@AQQJ@AAε@Ao%YXAQ¬mJ~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@A	KK\A%]GeK5K]iK⊂AC]H↓oSYX↓iQkf4∀@@@@@@@@@@@@@@@@@@@@@@@@@@@Aa←S9hAi↑↓iQJA%]gieUGiS←8ACMi∃d~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@Ai!JA!+M⊂A←d↓!∨ \A∪\A¬]rAG¬gH¬0hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβS#∃αβCWOBk∪?←r↓↓βC}K;S↔∩↓β←'f`4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β#∂3∃β.+9β∨O3↔9βO#M↓βv+]β[∞cW∀4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ε;⊃β∞seβ[∞cW∃β⊗+';≥αβCWOF+⊃β?⊂h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βC?πβ↔⊃β>K31βF[∃β⊗+↔9βn{[↔⊃π#<4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓βO#M↓↓εK;∪'≡S↔⊃α↓β∪↔∨#';π&K?98hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αα≠?Iαβ¬↓α¬*N")ε{I↓β
↓αBV≤A1βSF(4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β[∞cW∃↓αβCWOF+⊃↓β>K31↓αβ;?]αβ∀4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ε{∂∂WπK';≥π##∃βfOQβf{∂πSN{9β'ph)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βS#*↓βOS∞≠-9↓∧3?I↓ε	αB z	"αε}$ελh$∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα
	uαb∧∞FF*∧∞f∞g\Tαπε}∞ε."∧∞vNfAQ"αα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧εF∂lTααε=⎇V*αn&}j∧∧π&FT∧ε6O.>@hR∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααεM|6∂&≥⎇bε⊗\mw⊗*∧∞FF*,V>Nmm⊗v8Q$ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧
v2πMRπ∨L≤6ZpQ!PRα∧∧β∪∩∧∧ααβ¬EC∪βεεααα∧∧ααR	→Djα∧∧α∧∞d∧εNfL\v∞b∧
V.n}↑$∧≤Y9L↑Y;XlQ"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ~_.4λ~]. z⊂⊂7Xqzy9→r;  that is,
                                   you   have   just   tried   to
                                   reference  a  memory  locap	%←\~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@A=kigS⊃JAs←UdAG←IJAS[¬OH¬8hP4)↓α↓↓IMα↓↓↓↓¬Bcεε∧λλλ∧∧
H∪K	(λλ∧∧⊂(λ∧∧λλ≠M⎇K9>
≡⎇→;NDλλλ∧
9;;n/#"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ≤L\Y<Y-ly(λ
<hλ
.<⎇λ
|x⎇<N,9∞c!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∞~_=∧
<kλ∧∂;⎇(
=Y(∧
]<⎇∧∞≤Z9,A"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ≥≠d∞Y9Y.,;Xy$(≠9-]|↑(
Mxx=
≥{C"D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∞M_=λ∧∧_<≤≡Y;]
O(λλMy<h∧∧≠[⎇↓QHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧→>~.>Hλ∧∧∃~~.4λλ≤m
⎇;→∧∧≠Y=L↑C"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ≤L\;≠≡$
_<≤]Nh~,d~=λ∧≠y<eD~=β!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧y;Y.,;≠≡$
98;N4_(λ
\;;|O∀≥;Z.A"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ~_.4→X:-L9C!!"Hλ∧∧MH∧∧λλ¬E,ε∧λλλ∧∧λ
H∧∧λλλ∧∧λ∃~Tλ_{
|zhλ
<hλ∧
]<⎇∧∧≥~8m<9β"D∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∞⎇~;→$∂;⎇(∞|<Y(∧∞];[M≥YkH∧
~~<aQHλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧_Z=∧∧~<h∧[|H∧
{→.>≡;→$∧_{≠l=c"H∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ~-n→<\N↑≥≤h
⎇[≡+AQC"H∧∧λN$∧λλλε¬,ε∧λλλ∧∧λλ
D	3U⊃IzHλ⊂$∧→[≠l≡~;Yd
⎇Y<Lm≠⎇h∧
_<h
.<⎇β!$λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧
xx⎇..Y9D∧λ∃~T∀⊂h∧∞x=Y,D≥z;
A"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λ≤≠m≥]λλ∞Mh≥~Tλ≥{n 2⊂⊂0Y:2y⊂≥42FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂~w9z9≥qz4w[⊂⊂⊂⊂λ1pzyZw3P⊂λ⊂:42CE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂7{2\367{KεEεEλ⊂⊂⊂→L⊂⊂⊂⊂λ_⊗⊗_L⊂⊂⊂⊂λ⊂⊂⊂⊂
⊂$g*∪k⊂⊂⊂⊂w⊂⊂4[:2sr\⊂7{2\367{H⊂40yH5:yzβE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂7qq]y92r⊂⊂⊂*~2P(!H⊂9p{→r⊂;t[6εE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂8≠tw:⊂λ:7P:~2P⊂;[y2⊂⊂_s:2yλ:42FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ4w9z≤:qz4[w⊂⊂⊂λ⊂1pz\tw3Pλ⊂⊂:4→FE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂7{→y367]WεEεB*42P≤2vpt[4w3P_4z9P_y2P1]y92w≥6<P:[:yrr⊂⊂ yH72{P~w:2y≤:x:9H0y2P_r22rβE:42↑P;tv≠⊂:yrH:42P≠7{ryw:vq→y2r⊂_{0tv_q62P_4z9WβEβ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂≤WP⊂'2]Vyz<[2P$w≥2y9:\:9FEβEεE*~2P72]P4w:→y9:x≥⊂9|y]2vP⊂~yP44Yt6<P≤ecommended over the  old system;
thus I will explain the new system first.  P	!JAESPAeKaIKgK]QCiS←9fA←L4∃iQJ↓aCei%GkYCHAS]i∃eekaQf@ACIJAiQ∀AgC[∀@AS\↓E←iP↓gsgi∃[f@@!KqGKAhAM←H~∃GY=GVAS9iKeeUaifR0AEkh↓oSiP↓iQJA9KnAgegiKZ↓iQKe∀ACeJA[←e∀AS]i∃eekaQf~∃o!SGPAe←jAG¬\AK]¬EYJ\4∀~∃/!K\As=jAeK
KSmJ↓B@A]∃n[gieYJAS9iKeeUahXA¬YXAg=eifA=L@Ai!S]Of↓QCaa∃\\~∃→Segh↓←LAC1XXACLAkgk¬XAs←UdA!ε↓C]HA→YCOf↓CeJAMCmKH↓S\A∃=¬)!εAC]H↓iQJ~)ESh@↓eKae∃gK]i%]NAi!J@AG¬kgJA=L@Ai!JAS]QKeekAh@ASLAgi←IKH@A%\A∃∨	π≥∩\4∃+]Y∃gfAs=jAoKIJAKq∃GkiS9NABAU+≡ACPAiQJ↓iS[J↓←LAi!JAS]QKeekAhX@AQQJA!~∃o←IHAS\A∃∨¬Q!εAo%YX@A	JAaKIMKGi1rACG
keCi∀\@@A%L↓1βF{←↔[/⊃1↓βN{Uα↑-∩∀4+/C↔∂W&K;≥β
αVV=bβS#↔rβS#∃¬α
βO∂3↔⊃βNqα*>∃"B
βO→βK↔∞c3eβ&C∃βπ&#K↔O~β'84WK?WIε≠?K∃εK7π∨*β←#↔⊗)βS#*↓αVVzβ'9βπ∪?∨K/≠Mβ'~β3?∂∂#↔⊃mεK9↓β&C'Mβ≡O∃0hSS#∃π+O↔Ink?∪∃ε∪'Q↓αC'Qβ)57SF)↓EAβ↓A11αβ'QJ↓β'9∧R>
R∧→β←'fa↓β*β?≠→ph*S#/→↓βSF)βWO/⊃77?&)↓βO!β'9αα*>
%α
β←Nc1↓β&+31βN{U↓βN1β¬↓¬*V=↓π;πMβNp4+C⊗{∨K↔∨→β←#.qβS#*β';S/∪KWC"β?∂∂/∪K↔⊃ph(4*>KS!↓ε	↓β;/97OSNc∃↓βNsS↔K↔+CQ1πK?WIαβπ∂∂.kW3π&{KM↓εK∃↓π≠π[↔"q↓αSF+904V∪↔≠?⊗)βg?/⊃β';&+KKWπ!βK?/#';∃αβ'Mβ∨#πKS.!1β∂/∪Sπ'rαε∂MεK∃↓εc?π∪.!βW@hS←'SBβ∪πS
↓βπMεc'OS.!↓β'rβS#∃αβSπf)β↔f{]9↓ααg?W∩βWO↔∩k3↔[.a↓αε∨→βπK(h+Oπ6+⊃β'rβ3?∂∂#'?;~↓IAi≠9β?→πK?WIε≠?K∃εK7π∨*βW;3/≠Mβg␈)β←↔⊗)β↔c.≠WS'v84+¬¬*V=β∂!βS#*βS'7*β?→β&C∃β'w#↔KK/βQ1βNqβ←#N≠!β∂∂≠∃βg␈+Iαε∨→↓βπ⊗)βOπ6+⊂4+≡{7↔←F+K∃βNqβS#*βOgO&+584Ph)↓↓ααε
↓α↓↓α∞|rR⊗:%_4(4R↓↓↓↓
↓↓↓↓ααS#∃ε≠WKK.sQ↓β63W∃ε{→βSF)↓βOε∂↔←∂⊃βW'#?;Mr↓↓αO.)βS#(h)↓↓α↓↓↓↓α↓↓αN¬:
VQ¬*V=β}qβCπ>)↓IY
p4(4R↓↓↓↓∩↓↓↓↓ααg?W∩β∂WK⊗+;Qβπ∪?S↔∨#'?9o∪↔3?≡S'?rβ∂?;∨#π;Qph(4)α↓↓↓Mα↓↓↓↓∧	β←π⊗s';≥π3π3W*q↓αSFKMαε~βWOW∞c3eβ≡{;SπNsMβk/∪=β/!β'LhQ↓↓↓α↓↓↓↓α↓βO↔"βWAβ>KS!↓k	β'→π##'MεKMβSF)β3π∨!β';&+KKWπ!↓βg␈)β←'f`4)↓α↓↓↓↓α↓↓↓β>+Qβ.3?K∃πK?WIεS?	βO→βO←∂βC↔⊃ε{WQβ␈⊃βO#.3≠3↔"p4(4R↓↓↓↓"↓↓↓↓ααS#∃εsW7/⊃β?→αβS#∃πβK?∂/≠O?Iπ##'MεK;S↔↔∪WCQαβ7?∪.c∃β'_h)↓↓α↓↓↓↓α↓↓βK.s;';:β?99ααS#'~β;W7⊗+Iβ'~↓Eβ≠␈⊃βS#*αB∩Ak	Aβπv!↓Iβ6{H4)α↓↓↓↓α↓↓↓↓π##∃↓¬α∩A52q↓αONs∂∃↓εK;S↔↔∪WCS~βπK∃α↓#∂W↔∪↔;SgI%βπg;πgLhQ↓↓↓α↓↓↓↓α↓βKWrβ?9β&C∃αB%↓5EAbβS#'~αε
β>K31β∞c←πg~β∂?;&'9↓
p4(4R↓↓↓↓*↓↓↓↓αα¬↓β6cπ≥βNs∪'∂∂#';≥αβS#∃π≠SπS/→↓β?2βS#∃αβCK?≡+OO?∩βS#π h)↓↓α↓↓↓↓α↓↓βSFKMβ'w#↔KK/βQ73/3↔1βπ∪?∂↔∨→β'M∧r>Qβ↔+;;'v9↓β?rq↓αSFKL4)α↓↓↓↓α↓↓↓↓ε33π≥αβ'MβV+K=↓εK→↓β&CπQβπ∪?∂↔∨≠?I↓εKM↓β↔+;;'v9↓#;␈∪7π0hQ↓↓↓α↓↓↓↓α↓βOS∂#∃%β∞s⊃↓5
β'→β&CπQβπ∪?∂↔∨≠?IβO→β∪↔∞!84(hQ↓↓↓β1↓↓↓α↓αg?/⊃β+?∩βOSπ'+Mβ←␈∪⊃9↓¬≠↔∃β&C∃α*∃"NRM¬*V=β}qβCπ>)↓Ea*p4(4R↓↓↓↓:↓↓↓↓αα*>
∀*1β≠␈⊃↓βggment,  if any.  This  is the
           size, minus  one, of your  upper segment, if  you have
           one, and zero if you do not.

    10     The datum  for this particular  interrupt.  Currently,
           the only  interrupt with a  datum is the  parity error
           interrupt, for which you get here the address at which
           bad  parity  has  been detected.   This  value  can be
           invalid  if  you have  some  pending  interrupts which
           generate data (e.g., if you get several  parity errors
           in a row), in which  case this is the last  datum seen
           by the system.

    14     Your  positive  queue number.   This  tells  you which
           queue your  user-level process is  in.  See  the queue
           names and numbers in Appendix 5.

After these ACs  have been set up,  your interrupt routine is  run at
interrupt level starting at  the address contained in the  right half
of JOBAPR.   The PC  flags for your  interrupt-level routine  are set
from  the  bits  in the  left  half  of JOBAPR.   (The  PC  flags are
explained in Appendix  1.)  For example, if  bit 6 (the  4000,,0 bit)
in  JOBAPR  is on,  your  interrupt  process will  be  started  up in
IOT-USER mode (see Appendix  1).  Your interrupt process  is actually
started  by  the  system  doing  a  JRST 13,@JOBAPR  (see   the  JRST
instruction in the  PDP-10 manuals) and you  are then allowed  to run
uninterrupted (except for I/O  interrupt services) for up to  8 ticks
(8/60 of a second).  If you are still running at interrupt level when
that time  runs out, you  will get the  system error  message I-LEVEL
TIMEOUT and your program will be stopped.

When your  interrupt-level routine finishes  and wishes to  return to
the interrupted  program, it  should issue the  DISMIS UUO  (see page
214).   If, however,  the interrupt-level  routine does  not  wish to
return  to the  user-level program  but wants  instead to  BECOME the
user-level program, then it should  issue the UWAIT UUO and  then the
DEBREAK UUO.   This lets your  interrupt-level process  keep running,
but it will no  longer be at interrupt  level; it will be  running at
user level.  Note that neither UWAIT (see page 215) nor  DEBREAK (see
page 216) causes any  change in your PC  flags.  Thus, if you  are in
IOT-USER mode  when you give  these UUOs, then  you will still  be in
IOT-USER when  you return from  them!  If you  UWAIT and  DEBREAK and
THEN want to return to the interrupted program, you can do  so simply
by jumping to the interrupted address (contained in JOBTPC)  by doing
a JRST 2,@JOBTPC which will also restore the flags of the interrupted
process.   However, you  should probably  save JOBTPC  somewhere else
before DEBREAKing because after  you DEBREAK you can  receive another
interrupt, which would clobber the old JOBTPC with a new one.

To allow users  to enable both old-  and new-style interrupts  at the
same time, a user program can indicate a special three word  block to
be used  with NEW-STYLE  interrupts in  place of  the three  words at
JOBCNI, JOBTPC and JOBAPR, respectively.  If JOBINT in your  job data
area contains a non-zero  number, that number will be  interpreted as
the address of this three word block.  The normal three words  in the
job data area will continue to be used for old-style  interrupts (and
for new-style interrupts whenever JOBINT contains zero).

Now here are the UUOs used with the new-style interrupt system.
INTENB          [OP=047, ADR=400025]  CALLI 400025
--------------------------------------------------
        MOVE   AC,[<interrupt bits to be enabled>]
        INTENB AC,


The INTENB UUO enables the interrupts that correspond to the  bits on
(ones) in the  AC and disables  the interrupts corresponding  to bits
that  are  zero.   This  overrides  all  previous  enablings  (of the
new-style interrupts).  If there is an interrupt pending that you are
now enabling, the interrupt will be taken immediately.  (See page 207
for the interrupt conditions represented by the various bits.)
INTORM          [OP=047, ADR=400026]  CALLI 400026
--------------------------------------------------
        MOVE   AC,[<bits to be ORed in>]
        INTORM AC,


The INTORM UUO enables the interrupts corresponding to the  bits that
are  on (ones)  in the  AC.  The  enablings of  other  interrupts are
unchanged.
INTACM          [OP=047, ADR=400027]  CALLI 400027
--------------------------------------------------
        MOVE   AC,[<bits to be cleared>]
        INTACM AC,


The INTACM UUO disables the interrupts corresponding to the bits that
are  on (ones)  in the  AC.  The  enablings of  other  interrupts are
unchanged.
INTENS          [OP=047, ADR=400030]  CALLI 400030
--------------------------------------------------
        INTENS AC,


The INTENS UUO returns your new-style interrupt enablings in  the AC;
bits which are on (ones) represent enabled interrupts.
CLKINT          [OP=717]
--------------------------------------------------
        CLKINT <number of ticks between interrupts>


The CLKINT UUO  is used to set  the interval between  new-style clock
interrupts.   If you  enable for  new-style clock  interrupts without
using this UUO, you get the default interval of one tick (a 60th of a
second); but with this UUO you can set the number of ticks  per clock
interrupt to any number representable in 18 bits (up to about an hour
and twelve minutes).

This UUO enables for new-style clock interrupts and sets the interval
(in ticks) between  interrupts to the  number which is  the effective
address of the UUO.  This interval represents the amount of real time
(not  runtime)  between  your clock  interrupts.   The  mask  bit for
new-style clock interrupts is not altered by this UUO (see the INTMSK
UUO on page 221).

More  complete  description  of  new-style  clock  interrupts:  Clock
interrupts  may  be enabled  by  turning  on the  INTCLK  bit  in the
interrupt enablings.  This starts the clock ticking regardless of the
state of the  interrupt mask.  If the  clock interrupt should  try to
occur when it is  masked off, then the  bit is set in  JBTIRQ anyway,
i.e., the interrupt is pending and will occur as soon as it is masked
on.  Disabling the clock interrupt deletes the clock request  and any
pending clock  interrupt.  The time  between clock interrupts  is one
tick.  The CLKINT UUO enables clock interrupts and and sets  the time
between interrupts to the effective address of the UUO.  It no longer
masks on  the interrupt  so that it  is possible  to do  a guaranteed
indivisible operation  involving clock  interrupts.  Giving  this UUO
also flushes  any pe`≥⊃S]N@↓GY←G,AS]i∃eekaQfAiQ¬h@A[¬rAKq%gh\@A∪LAQQJ~∃∃MMKGQSmJ@↓CIIe∃gf@A=LAiQ∀@A++<@ASf↓uKe↑AiQK8@AGY=GV@A%]iKeIkaif↓CeJ~)ISgC	YKHA¬]HAC9rAaK9IS]N↓GY←G,AS]i∃eekaPASfA→YkgQ∃H\~∀→	∪'5∪&@@@@@@@A7∨@z`hn0Aβ	$th```Hi:@A
β→→∩h```Hh~∀Z4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZ~(@@@@@@A≠=-
@@↓βεY6qg←ke
JAck∃kJA[¬gV|X0x`tf↓M←dA⊃KgiS9CiS←8AckKUJ⎇:~(@@@@@@A	%'≠∪&↓βεX@@@@@m∪LAβz`XA
←]iK9ifA←_AβεA¬eJAS≥]←eK⊂\~∀~(AβεAISOQh@@A≥∃nA#k∃kJAi<A]i∃d~∀@4ZZZZ4ZZ@@@ZZZ4ZZZZ4ZZZZ4ZZZZ4∀@@@`@@@@@@@@@@@↓)"~∀@@@b@@@@@@@@@@A%U≥"~∀@@@d@@@@@@@@@@A∪9)/"~(@@@@L@@@@@@@@@@@A%∨/"~(~∀~∃QQJA	%'≠∪&↓++≡A%fAkg∃HAi↑↓iKe[%]CiJ↓C\AS9iKeeUah[Y∃mKXAAe←GKMf\@A]QK\~)s←j@↓OSmJAiQSLA++≡ACh@↓S]iKIekah↓YKmK0X@Ai!J@AGUeeK]P@AS]QKeekAhASf4∃ISg5SggK⊂AC]H↓s←kd↓kgKd5YKmK0Aae←
KgfA%fAG←9iS]k∃HACh↓iQJAA←S]h↓oQKe∀~∃Sh↓oCfA%]iKeIkaiK⊂\~∀~)≥←e[¬YYrX↓C\AS9iKeeUahAaI←GKgLAUkgP@AI←∃fABAAYCS\↓	∪'≠%&XAo%iP@A9↑Aβε4∃MSK1HAga∃GSMS∃H@QR9J\XA¬εAMS∃YH@A=LAuKI↑R\@↓⊃←oKYKdXA%LAiQ∀@Aβε↓MSKY⊂~∃SfA]←\5uKe↑0@AiQ∃\@Ai!J@AG=]iK]Qf@A←_@AiQ∀@Aga∃GSMS∃H@Aβ@@Ao%YX@A	J~∃S9iKeaIKiKH↓CfAB↓eKck∃ghAi<AeKcUKkJAQQJAU=DAi↑↓iQJAEkKkJ↓S]IS
CiKH↓S\~∃¬εAeS≥Qh\@↓)QJAYCYkJA←LA¬εAeS≥QhA[Ugh@A	JAEKQoKK\`AC]⊂@@fA%]GYkMSmJ~)C]HA%fAS]QKeae∃iKHA¬GG←e⊃S]NAQ↑AiQ∀AiCE1JAgQ=o\AC	←mJ\A3←kHAU←D↓oSYX4∃]←h↓EJAe∃ckKk∃HAk]1KgfA%hASf↓Gkee∃]iYr↓S\A←9JA←L↓iQJAEkKkKLAS]I%GCiK⊂~∃Er↓iQJA5CgVA%\Aβε↓YKMh0AoQKIJAB@DAS\A	ShAa=gSiS=\A≤A5KC]f↓iQChAShA%f~∃←,Ai↑AIKckKUJAiQ∀AU←D↓←khA=LAck∃kJA]U[EKd↓≤@Qg∃JAiQ∀AckKUJ@A]¬[KfA¬]H~∃9k[EKIfAS\Aβaa∃]ISpjR\@↓∪L@Ae←kdA)←D@A%fA]←PAS\@↓←]JA=d@Ai!JAck∃kKf~)oQ←g∀A[Cg,AESh↓Sf@A=\AS\↓βεAY∃MhXA=d@AS_AβεAISOQh↓I←Kf↓]←h@↓G←]i¬S\AB4∃]k[	KdAMI←Z@`↓i↑@@LXAiQ∃\A]↑↓eKck∃kKS]≤@AoS1XAEJ↓I←]J8@A∪\AC]r↓GCgJ0~∃iQ∀A	∪'5∪&A+U≡Agi%YXAI%g[SgMKfAi!JAGkIeK]h↓S]iKIekah8~∀~∃QQSf@↓++≡A%f@AS1YKOC0ACh@↓kgKd↓YKmK0\@@@!)QJA⊃∪'≠∪L@A++<@AQCLAC]←QQKd~)eKYCQKHA[∃C]S]≤AoQK8AOSm∃\AEr↓BAga¬GKoCHAae←
Kgfv↓gKJAACOJ@H`l\R4∀→+/β%(@@@@@@@@A7∨@z`hn0Aβ	$th```Li:@A
β→→∩h```Lh~∀Z4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZ~(@@@@@@A+]β∪(~(~∀~∃QQJA+]β∪(@↓++≡A
C\AE∀@Akg∃HAEr↓C\@A%]iKeIkah[1KmKX↓ae←G∃gf@AQ↑AK]MkeJ~)iQCh↓iQJA%]iKeIkaiK⊂Aae←≥eCZA%fA]←PAS\AQQJA[%IIYJ↓←LAKaKGki%]NAB↓++≡\4∃∪LA∧A++≡↓oCfA%\Aae=OeKgLAoQK8AiQJ↓S]iKIekah↓←GGkIeKHX↓iQK\↓+/β∪PAoSY0~∃oC%hAM←HAiQCPA++≡↓i↑AM%]SgP8@A+/¬∪(AC1g↑Ae∃ike]LAoSi As←kHAkgKH[YKm∃X~∃β
f@Ag∃h@Ak@@@QR9J\X@↓iQJA¬πf@AQQCh@↓oKeJAgCm∃H@Ao!K\@AQQJAS9iKeeUah~∃=GGkeIKHRX↓g↑As=jAgQ=kYHA9←hAKaaKGh↓C]rA¬πfAi<AEJAAeKgKImKHAQQe←k≥PAB~)+/β∪P\~∀~))QJ@↓[KGQ¬]SgZ↓kgKHAErAU/β∪(ASf@↓iQJA→←YY←]S]N\@A∪L↓]↑@AU+≡@A%fAS\4∃ae←≥eKgf0A+/β%(AgKQfAk`↓s←kd↓kgKd5YKmK0Aβπf↓C]H@↓eKikI]fAS5[KIS¬iKYr8~∃∨i!KeoSMJXAE%h@n@ d```0X`AE%hRAS8As←kHAS]i∃eekaPAK]C	YS]OL@ASf↓ike]∃H~∃←8XAiQ∀ACIIIKgfA=LAiQ∀AS]gQekGi%←\AC→iKdAQQJA+]β∪(@!i↑Ao!SGPAe←jAo%YX~∃]C]h@↓i↑@AIKike8AYCi∃dR@A%f@Ag¬mKHX↓C]H@↓s←kdAkgKH[YKm∃X@AaI←GKgLASf~)eKgk5KHX@↓S\@AQQJ@A5SIIY∀@A←LAg←[∀@A++<\@@A]QK\@↓iQChA++≡AMS]%gQKf4∃KqK
kiS←8X@Ai!JAgsMiKZ@↓]←iKL@AiQ¬hAs←T@ACe∀@AK]¬EYKHQESh@nR@↓M←dA∧~∃++<[G←[AYKiS=\@@A%]iKeIkahv@Ag↑@AESP@@@n@ASf@AGY∃CeKH@AC]⊂@As←Ud~∃S9iKeept-level routine is continued at the saved address,  with your
user-level ACs  already having been  set up.  At  this point  you are
once again at interrupt level and are subject to its timeout.

After you have done  a UWAIT, you can terminate  your interrupt-level
process with either of two UUOs.  You can DISMIS and  leave interrupt
level the normal way with no side effects for having done  the UWAIT,
or you  can DEBREAK  to make your  interrupt-level process  into your
user-level process (see the DEBREAK UUO below for more details).

If  you do  a UWAIT  and do  not return  immediately, then  while the
interrupted UUO is finishing  other interrupts may occur and  you may
even  do  another  UWAIT.   When  the  UUO  finally   completes,  the
interrupt-level routine to regain  control will be the last  one that
did a UWAIT.

If you are in the middle of a SLEEP UUO (see page 249) when you  do a
UWAIT, the SLEEP is terminated immediately; you do not wait until the
time when it would normally have ended.

The UWAIT UUO is illegal except at interrupt level.
DEBREAK         [OP=047, ADR=400035]  CALLI 400035
--------------------------------------------------
        DEBREAK


The DEBREAK  UUO is used  to turn an  interrupt-level process  into a
user-level process.   In order  to assure  that you  were not  in the
middle of a UUO when the interrupt occurred, you should give  a UWAIT
UUO before you DEBREAK.  After  debreaking, you will no longer  be at
interrupt level.  However, you  will have the same  accumulators that
you  had  before debreaking.   DEBREAK  does not  alter  the  flow of
instructions (as DISMIS does);  the next instruction executed  is the
one following the DEBREAK, but it will be executed at user level.

After  you  do  a  UWAIT  and  a  DEBREAK,  you  can  return  to your
interrupted  process by  jumping to  the address  that was  placed in
JOBTPC when the  interrupt started.  Note,  however, that as  soon as
the DEBREAK is done, you may receive further interrupts since you are
now at user level; thus  JOBTPC may get clobbered, so you  might want
to save it before you DEBREAK.  See also the INTDEJ UUO on page 225.

The DEBREAK UUO is illegal except at interrupt level.
IWAIT           [OP=047, ADR=400040]  CALLI 400040
--------------------------------------------------
        IWAIT


The IWAIT UUO  causes your job  to go into  a wait state  (INTW) that
will be terminated only when an interrupt occurs.
IENBW           [OP=047, ADR=400045]  CALLI 400045
--------------------------------------------------
        MOVE  AC,[<interrupt bit enablings>]
        IENBW AC,


The IENBW UUO is used to set your interrupt enablings and to put your
user-level process  into the interrupt-wait  state, both at  the same
time in order to prevent a race between going into interrupt wait and
getting  an interrupt.   This  UUO has  the same  effect  (except for
timing) that  would be  gotten from  doing an  INTENB followed  by an
IWAIT.
INTGEN          [OP=047, ADR=400033]  CALLI 400033
--------------------------------------------------
        MOVE   AC,[<bits to interrupt with>]
        INTGEN AC,


The INTGEN UUO generates an interrupt for you for each bit on  in the
AC.  This will  cause the interrupts  to take place  immediately, but
you must be enabled for  all of the interrupts you are  generating or
you will get a system error message.
INTIRQ          [OP=047, ADR=400032]  CALLI 400032
--------------------------------------------------
        INTIRQ AC,


The INTIRQ UUO returns in AC the bits representing the interrupts you
currently have pending.  Usually this will be zero unless you  are at
interrupt level.  This will also  be non-zero if between the  time an
interrupt is requested  and the time it  is serviced it  is disabled,
which  can  happen  if  your  interrupt-level  routine   changes  the
interrupt  enablings.   Finally, this  can  be non-zero  if  you have
masked off some interrupts (see the INTMSK UUO below).
INTMSK          [OP=720]
--------------------------------------------------
        INTMSK ADR

ADR:    <interrupt mask>


The INTMSK UUO is used to set your interrupt mask.  In this mask, a 1
means the interrupt is masked on,  a 0 means it is masked  off.  Your
interrupt mask  is initially  all 1's.  The  only interrupts  you can
receive are those that are both enabled and masked on.  If an enabled
interrupt is masked off (with  this UUO or with one of  the following
UUOs), then when that interrupt condition arises, the  interrupt will
remain pending  until it  is masked back  on, at  which time  it will
interrupt immediately.
IMSKST          [OP=721]
--------------------------------------------------
        IMSKST ADR

ADR:    <bits to be turned on in interrupt mask>


The IMSKST UUO ORs the  contents of location ADR into  your interrupt
mask (see the  INTMSK UUO above).  Thus  this masks ON  the indicated
interrupts.
IMSKCL          [OP=722]
--------------------------------------------------
        IMSKCL ADR

ADR:    <bits to be turned off in interrupt mask>


The IMSKCL UUO turns off,  in your interrupt mask, the bits  that are
on in location  ADR.  Thus this  masks OFF the  indicated interrupts.
See the INTMSK UUO above.
INTUUO          [OP=723]
--------------------------------------------------
        INTUUO <function>,ADR


INTUUO is an interrupt system extended UUO that uses the AC  field to
determine  which  of  several  functions  is  to  be  executed.   The
different functions are described separately below.
INTDEJ          [OP=723, AC=0]  INTUUO 0,
--------------------------------------------------
        INTDEJ ADR

ADR:    <interrupts bits to be ORed in>
        <PC word to go to>


The INTDEJ UUO  solves an special  race condition.  Suppose  you have
masked  off some  interrupts,  done a  UWAIT followed  by  a DEBREAK,
fooled around in user level for a while, and now wish to mask on your
interrupts again and return to the original user-level  process.  You
presumably have the PC word  stored in a location somewhere.   If you
mask on  your interrupts and  then try to  jump back to  the original
user-level process, you may get interrupted between  the mask-setting
UUO and the jump.  The second interrupt may want to do the same thing
and  may  in  the process  overwrite  your  PC word  with  a  new and
different PC.  This UUO solves this race by masking on  the interrupt
bits marked with 1's at ADR and jumping to the PC contained  in ADR+1
all  in  one  indivisible operation,  so  that  if  another interrupt
occurs, the PC it will interrupt will be the one specified in ADR+1.
IMSTW           [OP=723, AC=1]  INTUUO 1,
--------------------------------------------------
        IMSTW ADR

ADR:    <mask bits>


The IMSTW UUO sets your interrupt mask (see the INTMSK UUO above) and
then puts you into INTERRUPT WAIT.  The effective address of this UUO
should point to a word containing the mask bits you want set.
IWKMSK          [OP=723, AC=2]  INTUUO 2,
--------------------------------------------------
        IWKMSK ADR

ADR:    <bits for interrupts that should awaken>


The IWKMSK UUO  sets the mask  that determines which  interrupts will
awaken the  main process  out of  an interrupt  wait state.   When an
interrupt occurs while the main process is in interrupt wait,  if the
bit  for that  interrupt in  on  in the  wakeup mask,  then  the main
process is awakened.  If the bit is off, the main process is  left in
interrupt wait.  The  default value for the  wakeup mask is  all 1's.
The interrupt-level process is  run regardless of the setting  of the
wakeup mask.
INTDMP          [OP=723, AC=3]  INTUUO 3,
--------------------------------------------------
        INTDMP ADR
        <error return - error code in ADR+1>

ADR:    <job name or number>
        <block of 5 words for returned information>

Error codes:

  1     impossible job number
  2     ambiguous job name
  3     non-existent job name


The INTDMP UUO returns 5 words of information about a particular job.
The effective  address of  the UUO  specifies a  six word  block; the
first word of this block should contain the number or sixbit  name of
the job you want  to find out about,  where zero means your  own job.
If  the UUO  is successful,  the  skip return  is taken  and  words 1
through  5 of  the block  are filled  with the  information indicated
below.  If the  value in ADR  specifies an ambiguous  or non-existent
job or an  impossible job number, then  the direct (error)  return is
taken and an error code (see list above) is returned in ADR+1.

    WORD    VALUE

     0      Unchanged (job name or number).
     1      Interrupt enable bits of specified job.
     2      Interrupt mask.
     3      Zero.
     4      Wakeup mask (interrupt bits which will awaken the job
            from IWAIT; see IWKMSK UUO above).
     5      Number of  the queue  the job is  in.  See  the queue
            names and numbers in Appendix 5.
INTIPI          [OP=723, AC=4]  INTUUO 4,
--------------------------------------------------
        INTIPI ADR
        <error return - code in ADR+1>

ADR:    <job name or number>
        <bits for interrupts you want generated>

Error codes:

  1     impossible job number
  2     ambiguous job name
  3     non-existent job name
  4     job not enabled for interrupts specified


The INTIPI UUO is used to  send one or more interrupts to any  job on
the system.  ADR should contain the number or sixbit name of  the job
which you want to get the interrupt(s); zero means your own job.  The
specific interrupts you want generated should be indicated by bits on
in the word  at ADR+1.  The  job you choose  must be enabled  for the
interrupts you send.  If this  UUO is successful, the skip  return is
taken; otherwise,  the direct  (error) return is  taken and  an error
code (see list above) is returned in the word at ADR+1.
IMSKCR          [OP=723, AC=5]  INTUUO 5,
--------------------------------------------------
        IMSKCR ADR

ADR:    <bits to be turned off in interrupt mask>


The IMSKCR UUO turns off,  in your interrupt mask, the bits  that are
on in location  ADR.  Thus this  masks OFF the  indicated interrupts.
After masking off these interrupts, this UUO returns your OLD mask in
the word at ADR.  This avoids timing errors in saving and restoring a
mask.  See the INTMSK UUO above.
                      9.2  Old-style Interrupts


When you receive an interrupt under the old interrupt system, here is
what happens: Your  PC and flags are  saved in JOBTPC, the  CONI word
from the processor is  stored in JOBCNI (one old-style  interrupt bit
will be on in this  word indicating the cause of the  interrupt), and
your  PC  is changed  to  that in  the  right half  of  JOBAPR.  Your
interrupt routine may run as long  as it wants; as far as  the system
is concerned, your interrupt routine is now your main process  and no
further special action will be taken by the system for the interrupt.
When your interrupt routine is finished, it can do a

        JRST 2,@JOBTPC

to return to the interrupted  program.  This will restore the  PC and
flags to their states when the interrupt occurred.

Note  that  since  your  interrupt  routine  is  not  treated  at all
specially by the system, it can be interrupted itself by an interrupt
of the same or a different type.  If this happens, JOBTPC  and JOBCNI
will be clobbered with the values for the second interrupt; then when
processing resumes for the first interrupt, the address (in  the main
program) to which control should return will no longer be  in JOBTPC.
Unless this address was saved by your interrupt handler,  the program
will  probably  not  be  able  to  continue  successfully.   The  new
interrupt  system  avoids this  problem  by not  allowing  you  to be
interrupted while you are processing a new-style interrupt.

The processor  CONI word stored  in JOBCNI with  old-style interrupts
will have some extraneous bits on in addition to the bit representing
the interrupt.   The extra bits  currently set in  this word  are the
0,,6043 bits.

Here are a couple of UUOs to enable old-style interrupts.
APRENB          [OP=047, ADR=16]  CALLI 16
--------------------------------------------------
        MOVE   AC,[<interrupt bits to be enabled>]
        APRENB AC,


The APRENB UUO enables your job to receive old-style  interrupts upon
any of the conditions represented  by the bits in the AC.   Only bits
19, 22, 23, 26, 29 and 32 (0,,231110 bits) can be enabled by  the old
interrupt system.   See page 207  for the interrupt  conditions these
bits represent.
SETPOV          [OP=047, ADR=32]  CALLI 32
--------------------------------------------------
        MOVEI  AC,<address of interrupt routine>
        SETPOV AC,


The  SETPOV  UUO  is  used  to  enable  for  old-style  interrupts on
push-down stack overflow and  underflow.  This UUO takes  the address
in AC and  stores it in  JOBAPR; thus this  should be the  address of
your interrupt handling routine.  Then you are enabled  for old-style
push-down   interrupts,   with  any   previous   old-style  enablings
discarded.  Thus you  cannot use this UUO  if you want  any old-style
interrupts other than push-down overflow/underflow.
              SECTION 10--LIBRASCOPE FAST BAND STORAGE


User programs  are allowed to  use bands on  the Librascope  disk for
fast secondary storage.  However, because the system  uses Librascope
bands  for holding  swapped out  jobs and  because there  are  only a
limited  number of  bands, user  programs should  not depend  on this
resource too heavily.  The system  may crash if there are  not enough
bands for swapping.

Librascope  storage  is  allocated in  bands,  with  each  band being
=76 * =1024 (76K) words long.  Each band has =2432  sectors (numbered
from 0 to =2431); and each sector is =32 words long.  When reading or
writing a fast  band, you specify the  number of the sector  at which
the  transfer is  to start  and the  number of  words to  be  read or
written.  The number of words should always be a multiple of  =32; if
it  isn't,  then it  will  be increased  by  the system  to  the next
multiple of =32 and that many words will be transferred,  whether you
like it or not.  If you  read or write past the end of  sector number
=2431, you will actually  be reading/writing at the beginning  of the
band (starting over with sector 0).

When requesting  a Librascope  fast band (with  the UFBGET  UUO, page
236) you may  specify EITHER a  logical band number  from 0 to  37 by
which you can refer  to the band that  you are given OR  the physical
number of a particular band that you want.  A band number is taken as
a physical  band number if  it has the  400000 bit on;  otherwise, it
will be  interpreted as a  logical band number.   When you  have been
assigned a fast band, you  can expect it to contain  whatever garbage
was last written on it.

Each fast band has associated with it a sector offset which indicates
where  the  logical  beginning  of the  band  (sector  0)  is located
relative to the  physical beginning of the  band.  The value  of this
offset is generally irrelevant to the user except when he may want to
try to reclaim a particular band after some sort of catastrophe, such
as a system restart.  At such a time, the user might want to tell the
system  where on  a  particular band  his data  starts.   This sector
offset can be set to a specific value with the UFBGET UUO, and it can
be determined (for instance when set by the system) for  a particular
band with the UFBPHY UUO (see page 243).  The value of the  offset is
always between 0 and =1215 inclusive.
               10.1  Getting and Releasing Fast Bands


Here are the UUOs used to obtain and release Librascope fast bands.
UFBGET          [OP=047, ADR=400010]  CALLI 400010
--------------------------------------------------
        MOVE   AC,[<enable bits and offset>,,<band number>]
        UFBGET AC,
        <return if no bands available>


The UFBGET  UUO is used  to acquire one  Librascope band.   The right
half of AC should contain  EITHER the logical band number (from  0 to
37) by  which you  will refer  to the  band you  get OR  the physical
number of a particular band that you want; physical band numbers must
have the 400000 bit on.  Bits 1 (200000,,0 bit) and 2 (100000,,0 bit)
of AC are write- and read-enabling bits, respectively, which,  if on,
allow other jobs to write and/or read this fast band of  yours.  Bits
7:17 (3777,,0 bits) of AC should contain the sector offset  which you
wish this  band to have,  where zero means  the system  should choose
whatever offset it wants  (see the above explanation of  the offset).
To get a real offset of zero, turn on bit 0 (400000,,0 bit) in the AC
and make bits 7:17 zero.

If this UUO is successful, it takes the skip return and  the physical
number of the band assigned to you is returned in AC (but without the
400000 bit on).  If there are no bands available, or if  a particular
band you have requested is unavailable, the direct (error)  return is
taken.
↓Lε/↓≤αy@<∧~∀4∃β	$h@@@@q]↑P↔>'Qβ6cπ≥↓G≠'⊂≡d&O"↔eBcf≤LG⊗/|h∞⎇→<Y$_<α0H4yP:≠P3w←βE⊂⊂⊂λ⊂⊂⊂⊂∂7:vq→y⊂7sλ;wxαds to be re`d>
        <sector address of beginning of transfep∧|4∀~∀~))QJA→¬%β⊂A++≡↓GCkg∃fAICQBAi↑↓dβ↔π"β';Szβg?W∩β∂?K*β'7π>)β≠K}iβPεTε6∂>APV⊗≥lBαπ⎇
w⊂≤(λ≠
|z8x-D≠|H∧∞~≡<m≤x;λ∧X;Y∧∧≠]8εX2y⊂4\P⊂4wλ⊂:42H⊂ aWλ⊂*42CE2s3→qz4{→P0r2≤ess of the UUO  should point to a three-wop¬⊂@AEY=GV@Q¬f~∃g!←o\@↓CE←m∀RAoQ%GP@A
←]iC%]f@AQQJAM=YY←`>K;≥↓π3π3W/→i↓↓
IβPεTε∞&N,W∨_Q.vF/,Tπ&FTF∂&∀
↔~πMtαε⊗TF/ε}=↔&.D
⊗rπ≥}W∩ε=}&*ε≥\⊗>*D∧β∩J∞Mε*εn]V⊗/!Q&}2∞⎇w⊂≤h≥
t_Y(∞ 2pr⊂_w2⊂→JP:42H7:vq→y⊂7sλ:42P≤rqz7\⊂0z⊂λ;t4qZ⊂92pY4w3FB4yP:≠P9z0\:↔⊂⊂∩s⊂⊂:~2P9tYw⊂14]⊂∀~____⊗_⊂⊂1~z∀P7Y⊂:42H34xαst  wor↓HA←_~∃iQ%f@AE1←GVA%f@A∨8X@Ai!K\Ai!Sf@AU+≡Ao%YX@AIKike8@AS[5KISCQKYrA]SiQ←Uh~∃o¬SiS]≤AM←d↓iQJ@↓ieC]MMKd@!CYiQ=kOPA%h@Ao%YXAo¬ShAM=d@AC9rAae∃mS←kMYr~∃%]SiS¬iKHAQeC]g→KdAi<AMS]%gPRv↓SLAi!JAgS≥\AESPASfA=
XAQQJA
	%βλ↓++≡~)oSYX↓]←hAIKike8Ak]i%XAiQ∀AICi∧AieC9gMKd↓QCfA	KK\A
←[aY∃iKH\4∀~∃∪_AiQKIJACe∀A]↑A∃ee←eL@AIkIS]NAQQJAe∃CH@Q=dAIkIS]NAQQJ@A%]SiS¬iS←\↓←L~∃QQJAe∃CH@A%LAiQ∀@A]↑5oCSh↓ESh@↓SfA←8RX@AQQSfAU+≡@A]SYXAQCWJ@↓iQJAMWS`~)eKikI\\@AUa←\A¬\AKeI←d@Q%]GYk⊃S]N@↓BAeKEkKgh↓i↑Ae∃CHAB↓EC]HAiQCPAs←j4∃CeJ↓]←hAAKe[SQiKHAQ↑AeK¬HRXAQQJAI%eKGh↓eKikI\AoS1XAEJ↓iCWK8\~∀→
¬/I(@@@@@@@@A7∨@zn`ot~∀ZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZ~∀@@@@@A≠∨Y∩AβXyEC9HA]k5EKd|4∀@@@@@@A→¬/%(↓βεYβ⊃$~∀@@@@@@yKeI←dAe∃ike\x~∀~∃¬	$t@@@y]<[oCSPAMYC≤@QgS≥\AESPR|XXqCIIe∃gfA←_AICi∧|~∀@@@@@@y]k5EKdA=LAo←IIf|~(@@@@@@@y	KOS]9S]NAMKGi←HA]k[	Kd|~(~∀~∃QQJA
	/%(AU+≡AG¬kgKf↓ICiB↓i↑AE∀AoeSQiK\A→e←ZAe←kdA
←eJA%[COJ↓←]i↑↓iQJ~)MCghAEC]⊂AoQ←MJ@AY=OSGC0@A←d↓aQsg%GCX@↓EC]HA]k[	KdASL@AS\Aβε\A)QJ4∃KMM∃GiSm∀ACIIIKgfA=LAiQ∀A++≡AgQ←UYHAa=S]hAQ↑ABAQQeKJ↓o←eHAEY←
V@QCL~∃gQ=o\AC	←mJR↓oQSG AS]I%GCiKL@bRA]QKeJAiQJ↓ICiB↓i↑AE∀AoeSQiK\@↓←khA%f~∃Y=GCiK⊂X@dR↓iQJA9k[EKH@A←L↓o←eILAi↑A	J@AoISiiK8AC]HfRAi!J@A]U[EKd↓←L~∃QQJAg∃Gi←d↓ChAo!SGPA]eSiS9NASf↓i↑AgQCeh\A∪LAQQJAg%O\@A	Sh@PP````@XX`~)EShR↓←LAi!JAMSIghAo=eHA←_AiQSLAEY←
VASf↓∨≤XAQQK\AQQSfAU+≡Ao%YXAe∃ike\4∃S[[∃ISCi∃YrAo%iQ←kPAoCSQS]NA→←d@AQQJAiIC]gM∃d@QC1iQ←k≥PAShAoSY0AoCSP~∃M←HAC]r↓aeKm%←kgYdAS]SQSCiK⊂AieC9gMKd↓i↑AM%]SgP$vASL↓iQJAMSO\@↓EShA%f~∃∨→XAi!JA
¬]%(A+U≡AoS1X@A]=hAeKQke\AU]iSX↓iQJA⊃CiBAQeC]g→Kd@A!CfAE∃K\~∃
←[aY∃iKH\A∪LAQQSfAU+≡ASLAgkG
KggMUXXAi!JAgW%`AeKQke\A]SYXA	JAiC-K\\~)+a←\↓C\AKIe←dX↓iQJA⊃SeKGPAeKiUe\Ao%YXAE∀AiCW∃\\~∀_@@@@@@@@@@@@@@b@\f@A5SgGK1YC]K=kfA
¬ghA¬¬]HA+U∨f~∀4∀~∃⊃∃eJ@A¬eJ@AM←[J@↓gaKG%CX@AU+∨f@↓ae←m%IKH@↓M←d@↓MS]I%]N@@↓←kh@↓mCeS=kf~∃%]M←e5CiS←8ACE←UhAiQ∀AgiCQkfA←_A→SEICgG←AJAMCMhAEC9If\~(→+
¬A⊃2@@@@@@@A7∨@z`hn0Aβ	$th```Tk:@A
β→→∩h```Tj~∀Z4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZZ4ZZZ~(@@@@@@A≠=-
@@↓βεXy1←OSG¬XA←d↓aQsg%GCXA	C]HA9k[EKH|~∀@@@@@A+
¬A⊃2AβX~∀~(~∃)Q∀A+
¬A⊃2@AU+≡Ae∃ike]LAiQJAaQsMSGCX↓EC]H↓]k[E∃d@AC9HA←M→gKh@↓←LAi!J~∃→%EeCg
←aJA→CghA	C]HA%]ISG¬iKHA%\@Aβ\@A)!JA←M→gKhA%fAeKQke]K⊂@AS\↓βε~∃1KMhv↓iQJAAQsgS
CXAE¬]HA]U[EKdASfAIKike9KHAS8AβεAISOQh@QEkPAoSi!←kh~)iQJ@P````@AESh↓←\R\@A¬SP@b@PH````@XX`A	ShRA%\@Aβ
<⎇∪Rε↓fw0λ_Y$∞→<[-≡≥→9∧∞7PCNβ≥)∪9+
@Ae←kdAAe←Oe¬Z~∃C→iKdA∃qSiS9N\@A%L@yG=IJ|A%f@bX↓iQK\↓iQSf↓+(ε=π;'31εs?Qβ∞3≠↔∂"↓βπ;Jβ?_4WK?WIαα%>=αβ∂#πvs↔3Mαβ;?Iαβ←'3b↓β'Qε#=↓β
↓αJ⊗≤*Q↓βv{I↓β'KC∃↓α∩⊗b&"⊃mβ∧hSH∂..<W∂.]nB∧≤yjDLuXTεn}m≡F␈∩=vnn≥lBπ z;≠∧x=<lT≡;⎇.$≤≤[l}X;(∞Mh≤Y. zvrFB2|2q]z4wwλ⊂0z⊂≥42P⊂~w9z9≥qz4w[⊂⊂4v[rr4p]2v8	 following  the  "EXIT 1,"
instruction.  Other values of <code> are reserved for futur↓JAkMJ\~∀4∃¬←i AM←`⊗kMβ?2βS#'~αVV=ε['31ε;eβ∨βπ∂↔>Iβ7}#W3↔~βg?UεCπ[∃ph(4*
β+?	αβ∪↔S∞≠#↔⊃ε{IβK.s;';:↓β←'Mε␈/D	$d|t∞6/"∧¬π≡.T∞FF*	(%%≥J4α¬-Ytε}pQ.ε∞>Tε∪C*∀vO6≥lrε.≡↓~↑H→[n-(λ≠ld≥~~.4∃53d∞z;≠∧
_<β2H4z8β  I/O channels
closed, and then the job will be killed.
SLEEP           [OP=047, ADR=31]  CALLI 31
--------------------------------------------------
        MOVEI AC,<number of seconds to sleep>
        SLEEP AC,


The SLEEP UUO causes your job to be stopped for the number of seconds
specified  by   the  contents  of   the  AC,  which   is  interpreted
(approximately) modulo =69.  If AC contains zero, your job will sleep
for 1/60 of  a second.  When  the sleep time  is up, your  program is
resumed at the instruction immediately after the SLEEP.  If  you type
control-C or  execute a UWAIT  UUO at interrupt  level while  you are
sleeping, the SLEEP is terminated immediately.
RESET           [OP=047, ADR=0]  CALLI 0
--------------------------------------------------
        RESET


The RESET UUO is used to reset various conditions pertaining  to your
job.  All  monitor commands  that get  a new  program into  your core
image do a RESET first.  Also,  the "EXIT 0," UUO (see above)  does a
RESET just before exiting.  Here is a list of the things  that happen
when a RESET is done:

    All your((0DL I/O channels (including any currently saved with the
    IOPUSH UUO) are released without being closed.  That  is, the
    result is  the same as  that from doing  a RELEAS <channel>,3
    for every channel you have open.  See the RELEAS UUO  on page
    45.

    The state of program-controllable echoing of typed characters
    is reset to  echo all characters.   This is done  by clearing
    the NOECHO bit  (bit 28--the 0,,200  bit) and the  NOECHB bit
    (bit  27--the 0,,400  bit) in  the TTY  I/O status  word (see
    Section 13.2).  See also Section 3.1.

    The special-activation-mode bit  (bit 11--the 100,,0  bit) is
    cleared in your line characteristics word (see the GETLIN UUO
    on page 77),  and your special  activation table is  reset to
    the standard special  activation table (including  extra bits
    at the end of the table--see the SETACT UUO on page 84).  Bit
    3 (the  40000,,0 bit)  in your  line characteristics  is also
    cleared; this is the  bit which lets you read  all characters
    typed (including line-editor commands) after a PTLOAD.  Also,
    the linefeed-insertion-inhibition bit (bit 16--the  2,,0 bit)
    is  cleared  in  your  line  characteristics  unless  you are
    running on a PTY,

    JOBFF in your  job data area is  reset from the value  in the
    left half of JOBSA.  See Appendix 2.

    Your user interrupt  enablings (both new- and  old-style) are
    cleared.  See Section 9.

    UUO simulating  is disabled.   To re-enable  it, you  must do
    another UUOSIM UUO (see page 255).

    Your  core image  is unlocked  from core.   See the  LOCK and
    UNLOCK UUOs on page 258.

    If you have a  simulated upper segment created by  the SETPR2
    UUO (see page  188), it goes away.   Note that the  RESET UUO
    does not affect any real  upper segment you may have  nor any
    pseudo upper  segment which the  system may have  created for
    you  (using SETPR2)  if you  tried to  RUN or  GET  an SSAVEd
    program at a time when there were no job slots  available for
    its upper segment.

    Any spacewar processes you have are killed.  See Section 8.

    Any Librascope fast bands you have are released.  See Section
    10.

    If there is a letter in your mailbox, it is thrown away.  See
    Section 7.

    Any pseudo-teletypes (PTYs) you have are released  along with
    any jobs logged in on those PTYs.  See Section 3.5.

    Any  extra Data  Disc channels  you have  are  released.  See
    Section 4.5.

    If you  are on a  III or Data  Disc display, your  display is
    reset to its initial state  as would be done by a  DPYCLR UUO
    (see page 139 and Section 4 in general).

    If you are on a  Data Disc display, your video switch  map is
    reset to the permanent map.  See Section 4.6.

    If you are on a  III or Data Disc display, your  audio switch
    connection is reset to the permanent connection.  See Section
    4.7.
SWAP            [OP=047, ADR=400004]  CALLI 400004
--------------------------------------------------
        MOVE AC,[SAVADR,,GETADR]
        SWAP AC,

SAVADR: <device name in sixbit>
        <file name in sixbit>
        <file name extension in sixbit>
        <core size in 1K blocks>,,<starting address>
        <project-programmer name>

GETADR: <device name in sixbit>
        <file name in sixbit>
        <file name extension in sixbit>,,<mode bits>
        <core size in 1K blocks>,,<starting address increment>
        <project-programmer name of file>
        <project-programmer name for new job>


The SWAP UUO is used to save your core image in a file and/or  get or
run another core  image from a  file.  This UUO  can also be  used to
create a job and  to start up a program  on that job.  The  format of
the files used by this UUO is exactly that of the SAVE, GET,  RUN and
R  monitor commands.   Note  that SWAP  does not  allow  saving upper
segments;  in fact,  SWAP kills  your upper  segment, if  any, before
doing anything  else.  Also,  SWAP does  a RESET  (see the  RESET UUO
above) before saving or getting a core image.

If the left half of the AC is non-zero, then your core image  will be
saved in the file described by the block pointed to by the  left half
of the AC.  After that, if the right half of AC is non-zero, then the
core image contained in the file described by the block pointed to by
the right-half of the AC is  run or set up as either your  core image
or that of a  new job.  If both halves  of AC contain zero,  the SWAP
UUO is a no-op.

Now for a few details.

If the left half of the AC is zero, no core image is saved.  If it is
non-zero, it  should point  to a five-word  block which  contains (as
shown at  SAVADR above) the  specifications for the  dump file  to be
saved.  These specifications include  the device name, file  name and
extension, and  project-programmer name for  the file, the  amount of
core (in 1K blocks) to be saved and the starting address for the dump
file.  Before the  core image is saved,  your job name is  changed to
the  primary  name of  the  file to  be  written.  If  the  core size
specified is  zero, the  amount of  core you  currently have  will be
used.  If the starting address is zero, the current  starting address
of your job  will be used.  If  the starting address is  non-zero, it
will be copied  into the right  half of JOBSA  in your job  data area
before the core image is saved.  If the extension is zero, 'DMP' will
be used.  If the  project-programmer name is zero, your  current Disk
PPN is used (see page 20).

Next, if the right half of AC is zero, then no new core image is run.
If it  is non-zero,  it should point  to a  block which  contains (as
shown at  GETADR above) the  specifications for the  dump file  to be
run.  These  include the  device name, file  name and  extension, and
project-programmer name of the dump  file, the core size it is  to be
run in, the starting  address increment, some special mode  bits and,
if the dump file  is to be run as  a new job (independent of  the job
giving the  SWAP UUO), the  project-programmer name under  which that
job should be logged in.  The starting address increment is  added to
the starting address  saved in the dump  file to determine  where the
program is to be started.  The name of the job into whose  core image
the dump file is  read is set to the  primary name of the  file being
read.  The mode bits are in the right half of the file extension word
and have the following meanings:

    BITS   OCTAL         MEANINGS OF 1'S IN MODE BITS OF SWAP UUO

    35     0,,1          The  dump  file  will  not  be  started;
                         instead, the  message JOB SETUP  will be
                         typed out and  the job will be  put into
                         monitor mode.

    34     0,,2          The right half of GETADR+3 will be taken
                         as an  absolute starting  address rather
                         than as an increment.

    33     0,,4          The program will be started on a new job
                         which  will  be  logged  in   under  the
                         project-programmer name at  GETADR+5; if
                         this  PPN is  zero, your  logged  in PPN
                         will be used  for the new job.   If this
                         bit is off, then the word at GETADR+5 is
                         ignored.

    32     0,,10         If starting up another job (bit  33 on),
                         the job will be started up as  a phantom
                         rather  than as  a normal  job  (see the
                         WAKEME  UUO  on page  256).   This means
                         that the JLOG bit in the job status word
                         (see the JBTSTS UUO on page 185) for the
                         new job will not be turned on; thus that
                         job will go away if it hits any  sort of
                         error condition (such as a  parity error
                         or a push-down stack overflow).

When you  start up a  new job with  this UUO by  having bit 33  on in
GETADR+2,  the  job number  of  the new  job  is returned  in  the AC
specified in  the UUO.  A  zero is  returned if no  new job  could be
started because  there were  no job slots  left.  When  a new  job is
successfully started, its ACs are copied from your ACs; but in the AC
specified  in the  SWAP UUO,  the new  job will  get your  job number
instead of its own.  Thus the old job is given the number of  the new
job and the new  job is given the number  of the old one.  A  new job
started up this way is given  the same privilege bits as the  old job
(the one executing the SWAP) provided the new job's login PPN  is the
same as  the old  job's login PPN.   Otherwise, the  new job  gets no
privileges.

If the ENTER fails on the file specified at SAVADR, or if  the LOOKUP
fails on the file specified at GETADR, an error message will be typed
out and the program stopped.
RUN             [OP=047, ADR=35]  CALLI 35
--------------------------------------------------
        MOVE AC,[<starting address increment>,,GETADR]
        RUN  AC,

GETADR: <device name in sixbit>
        <file name in sixbit>
        <file name extension in sixbit>,,<mode bits>
        0
        <project-programmer name of file>
        <core size in 1K blocks>


The RUN UUO is DEC's version of the SWAP UUO.  Except for  a slightly
different parameter format (see RUN UUO calling sequence  above), the
only differences between SWAP and  RUN are that with the RUN  UUO, no
core image can be  saved and no phantom  job can be started  up (mode
bits 32:33 are ignored).  For details, see the SWAP UUO above.
TMPCOR          [OP=047, ADR=44]  CALLI 44
--------------------------------------------------
        MOVE   AC,[<code>,,ADR]
        TMPCOR AC,
        <error return>

ADR:    <filename>,,0
        IOWD   BLEN,BUF

BUF:    BLOCK  BLEN


Code    Function

  0     Return in AC the number of words of free TMPCOR space.
  1     Read specified file.
  2     Read and delete specified file.
  3     Write specified file (deleting old version, if any).
  4     Read TMPCOR directory.
  5     Read and clear TMPCOR directory.
  6     Read TMPCOR directory for all ALIASes.
  7     Read and clear TMPCOR directory for all ALIASes.


The TMPCOR UUO allows a job to leave several short files in core from
the running  of one  program to the  next.  A  RESET will  not affect
these files, but all of a job's TMPCOR files are deleted when the job
is  killed.   TMPCOR  files  are  provided  mainly  for communication
between programs running on  the same job; however, the  TMPCOR files
of  other jobs  can be  read (but  not written)  with the  TMPCRD UUO
described below.  This system of temporary storage  improves response
times by reducing the number of disk operations necessary for storage
and retrieval of  temporary data.  A TMPCOR  file must be  written or
read all  in one  dump-mode operation¬you cannot  pick up  reading or
writing where you left off; however, when reading a TMPCOR  file, you
do not have to read the entire file.  The sum of the sizes of all the
TMPCOR files for a single job is not allowed to exceed 400 words.

Each TMPCOR file has an EXPLICIT three-character sixbit file name and
an  IMPLICIT  project-programmer  name  (PPN).   When  you  create  a
temporary file, the  file is given your  current ALIAS (Disk  PPN) as
its project-programmer name.  To  reference the file later  using the
TMPCOR UUO either to read, delete or overwrite it or to find it  in a
TMPCOR directory, your ALIAS must  be equal to the file's  PPN (i.e.,
your ALIAS when  the file was written).   The TMPCRD UUO  (see below)
allows you to access files written with PPNs other than  your current
ALIAS.

For the  TMPCOR UUO,  AC left  should contain  a code  that indicates
which one of several functions  is to be performed.  AC  right should
hold the  address of  a two-word block  which contains,  as indicated
above, the name of the file being referenced (if any) and  the length
(BLEN) and location (BUF) of the user buffer area from which  or into
which data  is to written  or read.  When  this UUO returns,  AC will
contain  a value  that depends  on the  function executed.   This UUO
skips on successful completion  of the function and takes  the direct
(error)  return  otherwise.  Each  function  is  described separately
below.

     CODE FUNCTION

     0    Get free TMPCOR  space.  The number of  remaining words
          of TMPCOR space available to the job is returned in AC.
          This  function  always  takes  the  skip  return.  (The
          two-word  block  at  ADR  is  not  referenced  by  this
          function.)

     1    Read file.  If the specified file exists, as much of it
          as possible  is read  into the  user's buffer  area (at
          BUF), the length of the file is returned in AC  and the
          skip return is taken.  If the file does not  exist, the
          number of words of free TMPCOR space is returned  in AC
          and the direct (error) return is taken.

     2    Read and  delete file.   This function  is the  same as
          function 1 except that the file is deleted after  it is
          read.

     3    Write  file.   If  a  file  already  exists   with  the
          specified  name,  it  is deleted.   Next,  if  there is
          enough TMPCOR  space for  the new  file (whose  size is
          given by BLEN), then the file is written (with the data
          at BUF), the number  of remaining free TMPCOR  words is
          returned in AC and the skip return is taken.   If there
          is not enough space to write the file  completely, then
          the file is not  written, the number of  remaining free
          TMPCOR words is returned  in AC and the  direct (error)
          return is taken.

     4    Read directory.  The  number of different  TMPCOR files
          with the appropriate PPN (ALIAS) is returned in  AC and
          a  1-word  entry  is made  in  the  user's  buffer area
          (beginning  at BUF)  for  each such  file  until either
          there  is no  more  space or  all the  files  have been
          listed.  The entry for a file has the following format:

                  <name>,,<size>

          where <name>  is the  filename and  <size> is  the file
          length in words.   This function always takes  the skip
          return.

     5    Read and clear directory.  This function is the same as
          function 4 except that after the directory is read, all
          of  the user's  TMPCOR files  with the  appropriate PPN
          (ALIAS) are deleted.

     6    Read  directory  for   all  ALIASes.   The   number  of
          different  TMPCOR  files  (with  any  PPNs/ALIASes)  is
          returned in AC and a 2-word entry is made in the user's
          buffer area (beginning at BUF) for each such file until
          either there  is no  more space or  all the  files have
          been listed.   The entry for  a file has  the following
          format:

                  <PPN/ALIAS>
                  <name>,,<size>

          where <PPN/ALIAS> is the ALIAS of the job when the file
          was created, <name> is the filename, and <size>  is the
          file length in  words.  This function always  takes the
          skip return.

     7    Read  and  clear  directory  for  all   ALIASes.   This
          function is  the same as  function 6 except  that after
          the directory  is read, all  of the job's  TMPCOR files
          (for all PPNs/ALIASes) are deleted.
TMPCRD          [OP=047, ADR=400103]  CALLI 400103
--------------------------------------------------
        MOVE   AC,[<code>,,ADR]
        TMPCOR AC,
        <error return>

ADR:    <filename>,,<job number>
        IOWD   BLEN,BUF
        <PPN for TMPCOR file>

BUF:    BLOCK  BLEN


Code    Function

  0     Return in AC the number of words of free TMPCOR space.
  1     Read specified file.
  2     Read and delete specified file.
  3     Write specified file (deleting old version, if any).
  4     Read TMPCOR directory.
  5     Read and clear TMPCOR directory.
  6     Read TMPCOR directory for all ALIASes.
  7     Read and clear TMPCOR directory for all ALIASes.


The TMPCRD  UUO is like  the TMPCOR UUO  above except that  it allows
access to the temporary files of  any job and the PPN of files  to be
referenced can be specified explicitly.  The number of the  job whose
files  you want  to reference  should  be in  the right  half  of the
filename word at  ADR.  A zero job  number means your own  job.  Only
function codes  0, 1,  4, and  6 are  allowed when  accessing another
job's temporary files; other function codes will result in an ILLEGAL
UUO.  The  PPN used is  that contained in  the word at  ADR+2, unless
that word is  zero, in which  case the login  PPN (NOT ALIAS)  of the
specified job is used.   See the precise explanations of  the various
functions  under the  TMPCOR UUO  above.  All  the functions  skip on
success.
UUOSIM          [OP=047, ADR=400106]  CALLI 400106
--------------------------------------------------
        MOVEI  AC,ADR
        UUOSIM AC,

ADR:    <PC saved here for normal UUOs>
        <UUO saved here for normal UUOs>
        <PC to transfer to for normal UUOs>
ADR+3:  <PC saved here for I-level UUOs>
        <UUO saved here for I-level UUOs>
        <PC to transfer to for I-level UUOs>
ADR+6:  <PC saved here for spacewar UUOs>
        <UUO saved here for spacewar UUOs>
        <PC to transfer to for spacewar UUOs>


The  UUOSIM  UUO allows  a  user to  have  all UUOs  trap  to certain
locations in his core image instead of being executed by  the system.
At the same time the user can still have the system  execute whatever
UUOs the user needs.  The UUOSIM UUO passes to the system the address
of a 9-word block  which consists of three contiguous  3-word blocks,
each specifying what the system should do when a certain kind  of UUO
is given.  The  first 3-word block indicates  what should be  done on
UUOs  given  by the  user's  main program;  the  second  3-word block
pertains to  UUOs given at  interrupt level; the  third block  is for
UUOs given  at spacewar  level on  the PDP-10.   (Note that  UUOs can
NEVER be  executed on the  PDP-6.)  The address  of the  9-word block
should be in the AC specified  in the UUOSIM UUO.  After this  UUO is
executed, subsequent UUOs will cause the following action,  using the
appropriate 3-word block as mentioned above.

If the second word of the  block is non-zero or if the third  word is
zero, then  the UUO is  executed by the  system in the  usual manner.
Otherwise, the PC at the time the UUO was encountered is saved in the
first word of the block, the UUO itself is stored in the  second word
of the block  and control is transferred  to the PC specified  in the
third word of the block.  Note  that the PC stored in the  first word
has  already   been  incremented;  it   points  to   the  instruction
immediately following the UUO.  Note also that the UUO stored  in the
second word has already had the effective address calculation carried
out; the effective address is  in the address field and  the indirect
and index fields  will be zero.  The  prior test for the  second word
being  non-zero has  the effect  of disabling  user handling  of UUOs
issued by the user's UUO handler itself.

To undo the above effect of the UUOSIM UUO, give the UUOSIM  UUO with
zero in  the specified AC  and with ADR+1  (from the  original UUOSIM
given) containing a non-zero value  so that this UUO will  not simply
be  handed back  to you.   The  RESET UUO  (see page  250)  will also
disable further special user  handling of system UUOs (but  again you
must force the system to handle the RESET itself).
WAKEME          [OP=047, ADR=400061]  CALLI 400061
--------------------------------------------------
        MOVEI  AC,ADR
        WAKEME AC,
        <error return>

ADR:    <phantom's jobname in sixbit>
        <phantom's PPN in sixbit>
        <data>

data < 0  means never start this job
data = 0  means start this job now if it is not already running
data > 0  means start this job at the time specified by <data>,
          where <data> = <date>,,<time in minutes>


The WAKEME UUO is used to start up, or prevent from starting  up, any
of the system phantom jobs.  A phantom is a job started by the system
to do some system-related work but which runs as a user job.  Phantom
jobs run detached with the JLOG  bit off in the job status  word (see
the JBTSTS UUO on page 185).   The JLOG bit being off means  that the
job will  go away  if it  hits an error  (such as  a parity  error or
illegal memory reference).  Also, if you type a monitor  command line
to a job with the JLOG bit off, the job will go away immediately.

For this UUO,  AC should contain the  address of a three  word block.
The first two words of this block should have, in sixbit, the name of
the phantom to  be started up  and the project-programmer  name where
that phantom  lives.  The third  word of the  block should  contain a
code  indicating what  the  system should  do about  the  phantom.  A
negative code indicates that the phantom should never get started up,
a zero code means that the phantom should be started now unless it is
already running, and  a positive code  represents a date  (left half)
and time  (right half) when  the phantom should  be started  up.  The
date is in system date format (see the DATE UUO on page 165)  and the
time is in minutes after midnight.

If there is no phantom in the system's table with the jobname and PPN
given,  the error  return is  taken.  Otherwise,  the skip  return is
taken.

N.B.   You  should  not  use  this  UUO  unless  you  are  the person
responsible for  the phantom  you are referencing  or unless  you are
absolutely sure that what you are doing is okay.
JOBRD           [OP=047, ADR=400050]  CALLI 400050
--------------------------------------------------
        MOVEI AC,ADR
        JOBRD AC,
        <error return - code in ADR+1>

ADR:    <job name or number>
        -<word count>,,<address of data in his core image>
        <address in your core image where data is to go>

Error codes:    1  non-existent job number (job number = 0)
                2  ambiguous job name
                3  non-existent job name (or job number > 77)
                4  address out of bounds (either in your
                   core image or in his)
                5  job not logged in
                6  block too large (more than 1K)


The JOBRD  UUO allows you  to read a  block of data  out of  the core
image  of another  job.  The  data is  BLTed from  his core  image to
yours.  AC  should contain  the address  of a  three word  block, the
first word  of which  should contain  either the  sixbit name  or the
number of the job whose data you wish to copy.  The left half  of the
second word should contain the  negated count of the number  of words
to be  read; the  right half of  the second  word should  contain the
address of the  block in the  other job that  you want to  copy.  The
third word should  contain the address in  your core image  where you
want the data  to be put.   The maximum size  block that can  be read
using this UUO is 1K (=1024 words).

If this UUO fails for any reason, the direct (error) return  is taken
and a  code indicating the  cause of failure  is placed in  ADR+1.  A
list of the possible error conditions and their codes is given above.
If this  UUO succeeds in  transferring the data,  the skip  return is
taken.
LOCK            [OP=047, ADR=400076]  CALLI 400076
--------------------------------------------------
        LOCK AC,


The LOCK UUO is used to lock your job in core so that you can be sure
that you will  not be either swapped  out or shuffled in  core.  Upon
return from this UUO, you will  have been locked in core and  AC will
contain your  job's protection-relocation constant.   Your protection
constant (in the left half of AC) is the highest address in your core
image and always ends in 1777.  The relocation constant (in the right
half of AC)  is the value  that is added  to each memory  address you
reference, in  order to get  the real memory  address of  the desired
word in your core image.

Jobs with upper segments are not allowed to lock themselves in core.

To undo the effect of the  LOCK UUO, you can use the UNLOCK  UUO (see
below) or the  RESET UUO (see  page 250).  Any  system-detected error
condition will also cause an  UNLOCK to be done, as will  any attempt
to change your core size with the CORE UUO (see page 172).   The LOCK
UUO itself will first do an UNLOCK before locking you in.

The LOCK UUO should be  used only when really necessary.   When users
are locked in core, there is less core available for normal users who
are being  swapped in and  out; and when  there are or  have recently
been two or  more users locked in  core, there is the  possibility of
having a hole  in core that cannot  be used (except for  other locked
jobs).  A job  that must remain locked  in core for some  time should
give the  LOCK UUO over  again whenever  there is a  chance to  do so
because this causes  the job first to  be unlocked, then  shuffled to
fill any hole and finally locked again.
UNLOCK          [OP=047, ADR=400077]  CALLI 400077
--------------------------------------------------
        UNLOCK


The UNLOCK UUO is  used to unlock your  job from core after  you have
used the  LOCK UUO (see  above) to lock  it.  Many other  things also
cause an  UNLOCK to  be done.  These  are listed  under the  LOCK UUO
above.
SETDDT          [OP=047, ADR=2]  CALLI 2
--------------------------------------------------
        MOVEI  AC,<address of DDT or RAID>
        SETDDT AC,


The SETDDT UUO is used to tell the system the starting address of DDT
or RAID in your core image.  This address is saved in JOBDDT  in your
job  data area  (see Appendix  2); however,  you are  not  allowed to
change this value directly--you  must use this UUO instead.   The DDT
monitor  command  starts your  program  at the  address  contained in
JOBDDT if that address is non-zero.
SPWBUT          [OP=047, ADR=400000]  CALLI 400000
--------------------------------------------------
        SPWBUT AC,


The SPWBUT UUO returns in  the AC the value of the  spacewar buttons.
Each spacewar button  controls one bit in  this value.  The bit  is a
one if the circuit represented by that bit is open and a zero  if the
circuit is closed.  Only bits 22:26 and 28:35 (the 0,,37377 bits) are
currently wired up.  If the buttons are unplugged, the  wired-up bits
will all be on (value of 0,,37377).

The regular spacewar buttons only utilize the low-order 8  bits (bits
28:35--the 0,,377 bits).  At the time of this writing,  these buttons
use normally-closed  switches (bit  values of  zero) except  that the
switch for bit 34 (the 0,,2 bit) is normally open (bit value of one).
This means that  with the buttons plugged  in and not  depressed, the
value  of  the  spacewar  buttons is  0,,37002.   No  claim  is made,
however, that new buttons  will not replace those that  are described
in  this paragraph.   To be  sure what  kind of  switches are  in the
buttons, find and examine the buttons yourself.
EIOTM           [OP=047, ADR=400005]  CALLI 400005
--------------------------------------------------
        EIOTM


The EIOTM UUO puts you into IOT-USER mode, in which opcodes  from 700
up  are executed  as machine  I/O instructions  rather than  as UUOs.
This mode is described further in Appendix 1.
LOGIN           [OP=047, ADR=15]  CALLI 15
--------------------------------------------------
        MOVE  AC,[-N,,ADR]
        LOGIN AC,

ADR:    <project programmer name>
        <privilege bits>


The LOGIN UUO is used by the LOGIN program to log in a job.  This UUO
is illegal if JLOG in your  job status word is already set  (i.e., if
you are already  logged in).  If JLOG  is not already set,  then this
UUO turns it on and turns  off JACCT in your job status  word.  Also,
it  is used  to set  the  logged in  PPN for  the job  and  the job's
privilege bits.  AC right should  contain a pointer to a table  of up
to two words.  The first word in the table should contain the PPN the
job is to get and  the second word should contain the  privilege bits
the job is to get.  AC left should contain the negative of the number
of words in the table that  are to be set as indicated.  Thus  to set
both PPN and privileges, AC  left should contain -2; to set  only the
PPN, AC left should be  -1.  Values (of the PPN and  privileges) that
are not set from the table at ADR are cleared to zero.  The privilege
bits  are set  both in  your active  privileges and  in  your passive
privileges (see the GETPRV UUO on page 178).
LOGOUT          [OP=047, ADR=17]  CALLI 17
--------------------------------------------------
        LOGOUT


The LOGOUT UUO  is provided for the  LOGOUT program to kill  its job.
This UUO is illegal if JACCT  is not on in your job status  word.  If
JACCT is on, the job is killed.
           SECTION 12--OBSOLETE OR OTHERWISE USELESS UUOS


This  section documents  some  UUOs that  still work  but  which, for
various reasons, are obsolete.  Mentioned at the end of  this section
are some other UUOs that are  even more obsolete in that they  do not
work.  In  general, there  are better ways  to do  the things  all of
these UUOs do, but the documentation is included for completeness and
for the benefit of people  trying to decode rusty old  programs which
use these UUOs.  Users are to be discouraged from using these  in any
new pieces of code.
                           12.1  Old UUOs


Here  are  some UUOs  that  still work  although  they  are generally
unnecessary.
INTIIP          [OP=047, ADR=400031]  CALLI 400031
--------------------------------------------------
        INTIIP AC,


The  INTIIP UUO  is designed  to  be given  by a  process  running at
interrupt level.  It returns in AC the bit representing the source of
the current interrupt.  This is a copy of the value of JOBCNI  at the
time your  interrupt-level routine  is started up.   Thus it  is much
more efficient to do a  MOVE AC,JOBCNI and the results are  the same.
If you give this UUO when  you are not at interrupt level,  then zero
is returned in AC.
USKIP           [OP=047, ADR=400041]  CALLI 400041
--------------------------------------------------
        USKIP
        <return if no UUO in progress>


The USKIP UUO can be used by an interrupt-level process  to determine
if the  interrupted program  was in  the middle  of executing  a UUO.
USKIP  will skip  if there  was a  UUO in  progress at  the  time the
interrupt occurred  and will  take the  direct return  if no  UUO was
being executed.   Thus this UUO  will tell you  whether a  UWAIT will
return  immediately.   The  same  information  can  be   obtained  by
examining the user-mode bit (bit 5--the 10000,,0 bit) in  JOBTPC; the
user-mode bit will be on unless a UUO was in progress.

The USKIP UUO is illegal except at interrupt level.
LIOTM           [OP=047, ADR=400006]  CALLI 400006
--------------------------------------------------
        LIOTM


The LIOTM UUO gets you out of IOT-USER mode, thus making opcodes over
700 into UUOs again.  However, this function can be  achieved without
doing a UUO at all.  For instance, the instruction
        JRST 2,@[.+1]
will also get you out of IOT-USER mode.  See the writeup  of IOT-USER
mode in Appendix 1.
DDTIN           [OP=047, ADR=1]  CALLI 1
--------------------------------------------------
        MOVEI AC,ADR
        DDTIN AC,

ADR:    <21 word block for returned characters>


The DDTIN UUO is used to read in all characters that have  been typed
on the terminal attached to your job.  This UUO does not wait for any
special activation character;  it just reads  whatever is in  the TTY
input buffer and returns those characters in the block pointed  to by
the contents of AC.  This block  should be at least 21 words  long in
order to hold all the  characters being read; at most  =84 characters
will be read.  The characters are returned as an ASCIZ string  at ADR
(7 bits per character, 5 characters per word, with a null (zero) byte
after the last character read).

If the TTY input  buffer is empty, this  UUO will not return  until a
character is  typed.  Thus  at least one  character is  returned each
time this UUO is given.

TTYUUO (see Section 3.3)  provides generally more convenient  ways of
reading characters from the terminal.
DDTOUT          [OP=047, ADR=3]  CALLI 3
--------------------------------------------------
        MOVEI  AC,ADR
        DDTOUT AC,

ADR:    <ASCIZ string to be typed out>


The DDTOUT UUO types out an ASCIZ string on the terminal.   AC should
contain the address of the  first word of the string.  The  string is
terminated by the first null  (zero) byte.  The OUTSTR UUO  (see page
74) is the  recommended way of typing  out strings although  this UUO
still works.
GETCHR          [OP=047, ADR=6]  CALLI 6
--------------------------------------------------
        MOVE   AC,[<device name in sixbit, or channel number>]
        GETCHR AC,


The GETCHR  UUO does exactly  the same thing  as the DEVCHR  UUO; see
page 61.
SETNAM          [OP=047, ADR=400002]  CALLI 400002
--------------------------------------------------
        MOVE   AC,[<sixbit job name>]
        SETNAM AC,


The SETNAM UUO is used to  change your job name to that given  in the
AC.  Any job name is legal.  This UUO does exactly the same  thing as
the SETNAM UUO which is CALLI 43.
SEGSIZ          [OP=047, ADR=400022]  CALLI 400022
--------------------------------------------------
        SEGSIZ AC,


The SEGSIZ  UUO returns in  AC the size  of your upper  segment.  The
size returned is the  protection constant of your segment,  i.e., the
number  of words  in it  minus  one.  If  you have  no  upper segment
attached, zero is returned.

This segment size can be  found out more easily by looking  at JOBHRL
in the job data area (see Appendix 2).
                         12.2  Useless UUOs


Each of the following unimplemented UUOs is either illegal or a no-op
except XPARMS, whose  CALLI number has  been re-used for  another UUO
(TMPCRD).

DDTGT           [OP=047, ADR=5]  CALLI 5
DDTRL           [OP=047, ADR=7]  CALLI 7
TRPSET          [OP=047, ADR=25]  CALLI 25
TRPJEN          [OP=047, ADR=26]  CALLI 26
GETSEG          [OP=047, ADR=40]  CALLI 40
GETTAB          [OP=047, ADR=41]  CALLI 41
SPY             [OP=047, ADR=42]  CALLI 42
RUNMSK          [OP=047, ADR=400046]  CALLI 400046
GDPTIM          [OP=047, ADR=400065]  CALLI 400065
DSKTIM          [OP=047, ADR=400072]  CALLI 400072
XPARMS          formerly  [OP=047, ADR=400103]  CALLI 400103
                [OP=042]
                [OP=044]
                [OP=045]
                [OP=046]
                [OP=052]
                [OP=053]
                [OP=054]
                [OP=700]
             SECTION 13--INDIVIDUAL DEVICE DESCRIPTIONS


This section reveals  the idiosyncrasies of  each of the  various I/O
devices and of the system in handling these devices.  Each  device is
described in a separate  subsection.  For features common to  all (or
most) of these  devices, consult Section 2.   For the common  bits in
the device I/O status word, see specifically Section 2.6.
               13.1  The Disk (DSK and new-style UDP)


Except where noted below, all explanations in this section apply both
to device DSK and to new-style usage of device UDP1.   However, these
are  two  different  devices,  each with  its  own  MFD  (Master File
Directory); that is, DSK:OPTION.TXT[S,SYS] and UDP1:OPTION.TXT[S,SYS]
are different files.

Disk storage is  organized by files.  Each  file is allocated  one or
more disk blocks  depending on the size  of the file.  Each  block is
2.25K words  long and  consists of  =18 records  of =128  (200 octal)
words each.   All disk  activity is  in terms  of whole  records.  In
buffered  mode,  this  means  that  exactly  200  words  of  data are
transferred for  each buffer, regardless  of the actual  buffer size;
thus using  a non-standard  size buffer  for disk  I/O should  not be
attempted.  In dump mode an output command to write a number of words
that is not a multiple of  200 will cause the last record  written by
the  command to  be filled  with zeroes.   These zeroes  will  not be
included in the word count for the file if and only if they  are part
of the last record in the file.

WARNING: With a dump mode output command indicating an ODD  number of
words, the low order 4 bits (the 0,,17 bits) of the last word will be
written  out as  zero  regardless of  their actual  values.   Thus to
ensure that  a dump mode  output does not  lose any data,  you should
make  sure either  that there  are  an even  number of  words  in the
transfer or that  the last 4  bits of the last  word do not  hold any
significant data (for instance you can add a zero word after the last
normal data word).

In  buffered  mode,  disk  I/O  is  optimized  to  account  for block
boundaries.   On  output, this  means  that filled  buffers  will not
actually get written out until there is only one empty buffer left or
until enough buffers  have been filled to  finish out a  whole block.
On input, as much of a  whole block as will fit into your  buffers is
transferred all at one time.

Each file  belongs to some  project-programmer name (PPN).   For each
PPN, there  is a special  file called the  UFD (User  File Directory)
which contains the  names of all the  files on that disk  area (i.e.,
all the files with that PPN).   Every UFD is a file on the  disk area
[1,1].  The filename for a given PPN's UFD consists of the PPN itself
as the primary name (project  code in the left half,  programmer name
in the  right half, each  half being right-justified),  the extension
".UFD" and  the PPN [1,1].   For example, the  UFD for the  disk area
[FOO,BAZ] is the file  FOOBAZ.UFD[1,1].  The UFD for disk  area [1,1]
is "  1  1.UFD[1,1]" and is  called the MFD (Master  File Directory).
The MFD of course contains the names of all the files on [1,1], which
files are in fact the UFDs for the various disk areas.  The  date and
time written for a  UFD on device DSK: are  the date and time  of the
last LOGOUT done by that PPN.

Any UFD  (including the MFD)  can be read  just like any  other file.
Each UFD consists of a number of 4-word entries, each of which either
points  to  a file  or  is  unused.  These  4-word  entries  have the
following format:

    <file name>
    <file extension>,,<high-order date written bits; creation date>
    <protection, mode, time written, and low-order date written bits>
    <disk block number for first block in the file>
    
The first three words are exactly the first three words you  get back
from a successful LOOKUP (see page 32).  The <file name> of  an entry
not in use is zero.
               Long Block LOOKUPs, ENTERs and RENAMEs


If the 0,,400 bit (bit 27) is on in the I/O status word when you give
a LOOKUP,  ENTER or  RENAME UUO  for the  disk, then  the UUO  uses a
6-word  block rather  than  the usual  4-word block  (see  these UUOs
starting on page 32).  An  ENTER using the 6-word block will  set the
file's date  and time  written directly  from the  third word  of the
block rather than from the current time and date.

The fifth word of the block holds the date (in system date format) on
which the  file was  last referenced.   The sixth  word of  the block
contains the date the file was last dumped on magnetic tape  for disk
backup.  The format of this word is as follows:

    BITS   OCTAL         MEANINGS OF FIELDS IN DUMP-DATE WORD

    4      20000,,0      This bit is a one if this dump-date word
                         is invalid.

    24:35  0,,7777       This is the date last dumped,  in system
                         date format  (see the  DATE UUO  on page
                         165).

    0      400000,,0     This bit is a  one if the file  was last
                         dumped on a temporary class  dump.  This
                         bit is  zero if the  dump was  of system
                         permanent class.

    9:20   777,,700000   These bits hold  the number of  the tape
                         on which the file was last dumped.

    1:3    340000,,0     These bits hold the number of times this
                         file has been dumped in  permanent class
                         dumps.
                            Record Offset


In the  normal case,  the data  in a  disk file  starts in  the first
record of  the first  block allocated  to the  file.  However,  it is
sometimes convenient to use the first few records of a file  to store
special  data which  is associated  with the  file but  which  is not
really part of the file.  To this end, the record offset  feature was
added to  the disk system.   This feature allows  a user to  HIDE any
number of records at the beginning of a file simply by specifying the
physical record number of the first record of the normal part  of the
file.  When this is done, any program doing normal disk I/O with this
file will never  see the hidden  records; however, any  programs that
need to access the hidden part can do so easily.

In a disk file,  logical record number 1  is the first record  of the
normal part of  the file.  The last  hidden record is  logical record
number  0,  and  preceding  records  are  given  successive  negative
numbers.  Thus, in a file  with N hidden records, the  first physical
record of the file would be logical record number -N+1, the remaining
hidden records would  be numbered, -N+2, -N+3,  ..., -1, and  0.  The
first logical record of such  a file would be physical  record number
N+1.

To access the  hidden records (which  come before logical  record 1),
use the USETI and USETO UUOs (see Section 2.14) with  the appropriate
logical record number.  Note that in these UUOs the effective address
is interpreted as a signed twos-complement number which specifies the
logical record number of interest.

To set the record offset for a file, a special form of the  MTAPE UUO
for the disk is used.  MTAPE for disk has several uses;  you indicate
the one you want by specifying a function number along with the MTAPE
UUO.   The function  number for  the set-offset  UUO is  21.  Another
MTAPE (function number 20) can be used to retrieve the  current value
of the record offset.  In both cases the actual offset number used is
the PHYSICAL RECORD NUMBER OF  THE FIRST LOGICAL RECORD of  the file,
i.e.,  the number  of hidden  records plus  one.  The  get-offset and
set-offset UUOs are described  in detail below in the  MTAPE writeup;
see MTAPEs with function numbers 20 and 21 on page 282.
                    Disk I/O Status Word Summary


    BITS   OCTAL         NAME      MEANING OF A 1

    27     0,,400        DMPBIT    Use  6-word blocks  in LOOKUP,
                                   ENTER and RENAME.

    28     0,,200        GARBIT    Suppress  error  message  when
                                   disk is full or  bad retrieval
                                   from LOOKUP, ENTER  or RENAME;
                                   take error return instead.
                       MTAPE UUOs for the Disk
MTAPE           [OP=072]
--------------------------------------------------
        MTAPE <channel number>,ADR      ;MTAPE form for the DISK

ADR:    SIXBIT /GODMOD/
        <function number>
        <other arguments depending on function>
        ...


This form  of the MTAPE  UUO is  used to do  special things  with the
disk.  The exact meaning of  this UUO depends on the contents  of the
words  at ADR  and ADR+1.   To execute  any of  the  functions listed
below,  you  must have  INITed  or  OPENed the  disk  on  the channel
indicated by the AC field of the UUO.

If the word at ADR  contains -1 (instead of SIXBIT /GODMOD/  as shown
in the sample call above), then the program will be stopped  with the
message ILLEGAL  UUO.  If  the word  at ADR  contains neither  -1 nor
'GODMOD', then  the USET pointer  for the file  open on  this channel
will be returned in the word at ADR.  This is the value which  can be
set by a USETI, USETO or UGETF UUO (see Section 2.14).

If  the  word at  ADR  contains  'GODMOD', then  the  function  to be
executed is  determined by  the function  number contained  in ADR+1.
The   various  such   functions  are   explained  below   along  with
descriptions of what the block at ADR should contain when the  UUO is
called for  that function.   Some of these  functions require  that a
file be open on the indicated channel.  Also, some functions take the
skip  return  on  success  and the  direct  return  on  errors; other
functions  always take  the direct  return.  Finally,  some  of these
functions require you to have certain privileges in order  to execute
them.  See the writeups below for details.

Absolute disk addresses specified in  the MTAPEs below for a  UDP are
taken relative to the first  block (the SAT block) of  the particular
UDP and are limited to blocks on that UDP.  MTAPEs for device DSK can
reference all disk blocks, including UDP blocks.

The SATID for a UDP is a SIXBIT name which is intended to  agree with
the name written on the pack label.  This is not to be  confused with
the  UDP password.   The last  block of  a UDP  is still  used  for a
password, as with old-style UDPs.  However, the password need  not be
given  for  new-style operations,  which  are protected  by  the same
protection-key scheme used  with the DSK.   The UDP password  is also
stored as the password for the UDP disk area [1,1].



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;GET USET POINTER
        0


Function 0 for a disk MTAPE  gives you the current value of  the USET
pointer for the file open  on this channel.  This is the  value which
can be set by  a USETI, USETO or  UGETF UUO (see Section  2.14).  The
pointer is returned in ADR+1 (where the 0 was).



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;DISK ABSOLUTE READ
        1               ;This function takes SKIP return on success.
        IOWD   <word count>,<first address>
        <sign-bit flag and record number>,,<disk block address>


Function  1  for a  disk  MTAPE reads  into  your core  image  from a
specified absolute location on the disk.  The address where  you want
the data to  go and the number  of words to be  read should be  in an
IOWD word at ADR+2.   The disk block that  you want to read  from and
the record number  within the block where  you want to  start reading
should occupy the right and  left halves respectively of the  word at
ADR+3.  If the  sign bit is  on in ADR+3,  then the transfer  will be
done using one of the extra blocks at the end of system disk  pack 0;
in that case the device must not be a UDP and the disk  block address
should be relative to the end  of pack 0.  You cannot read  from more
than  one  block  at a  time  with  this UUO.   If  this  function is
successful, it takes  the skip return; if  there are any  errors, the
direct return is taken.  You  must have the INF privilege  to execute
this function.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;DISK ABSOLUTE WRITE
        2               ;This function takes SKIP return on success.
        IOWD   <word count>,<first address>
        <sign-bit flag and record number>,,<disk block address>


Function 2 for  a disk MTAPE  writes data from  your core image  to a
specified absolute location on the disk.  The address of the  data in
your core image and the number of words to be written should be in an
IOWD word at ADR+2.   The disk block that  you want to write  and the
record number within the block where you want to start writing should
occupy the right and left  halves respectively of the word  at ADR+3.
If the sign bit is on in ADR+3, then the transfer will be done to one
of the extra blocks  at the end of system  disk pack 0; in  that case
the device must  not be a  UDP and the  disk block address  should be
relative to the  end of pack  0.  You cannot  write on more  than one
block at a  time with this UUO.   If this function is  successful, it
takes the skip return; if there are any errors, the direct  return is
taken.  You must have the DAW privilege to execute this function.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;SET SAT BIT
        3
        <disk block address>


Function  3 for  a disk  MTAPE sets  the SAT  bit corresponding  to a
particular disk address.  The SAT table indicates which blocks on the
disk are  in use;  blocks in use  have the  corresponding bit  on and
blocks unused have the bit  off.  You must have the DAW  privilege to
execute this function, which marks a block as in use.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;CLEAR SAT BIT
        4
        <disk block address>


Function 4  for a disk  MTAPE clears the  SAT bit corresponding  to a
particular disk address.  You must have the DAW privilege  to execute
this function, which marks a block as unused.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;READ SAT TABLE
        5
        IOWD   <word count>,<first address>
        <relative address in SAT table>


Function 5 for  a disk MTAPE  reads a portion  of the SAT  table into
your core image.  The amount and destination of the read is indicated
in an IOWD  word at ADR+2.   The address in  the SAT table  where you
want to  start reading  (relative to SATTAB)  is specified  in ADR+3.
The SAT table indicates which  blocks on the disk are in  use; blocks
in use have the corresponding  bit on and blocks unused have  the bit
off.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;WRITE SAT TABLE
        6
        IOWD   <word count>,<first address>
        <relative address in SAT table>


Function 6 for a  disk MTAPE writes a  portion of the SAT  table from
your core image.  The amount and address of the data to be written is
indicated in  an IOWD word  at ADR+2.  The  first address in  the SAT
table (relative to SATTAB) that you want to write is specified by the
word  at ADR+3.   You must  have the  DAW privilege  to  execute this
function.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;FORCE SAT TABLE TO BE WRITTEN OUT
        7


Function 7 for a disk MTAPE forces the SAT table which the system has
in core to be written out onto the disk.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;READ SPECIAL 5 WORDS OF FILE INFORMATION
        10              ;This function takes SKIP return on success.
        <address of 5-word block to receive file information>


Function 10 for a disk MTAPE reads the special 5 words of information
for a file into your core image.  A successful LOOKUP must  have been
done on this channel.  The address  where you want the 5 words  to go
should be in the word at ADR+2.  If this function succeeds,  the skip
return is  taken.  If  no LOOKUP  has been  done, the  direct (error)
return will  be taken.  You  must have the  INF privilege  to execute
this  function.  The  information kept  in these  special 5  words is
described below separately for normal files and for UFDs.

    WORD  CONTENTS OF SPECIAL 5 WORDS FOR NORMAL FILES

     0    Zero.
     1    Zero.
     2    The name of the job that created this file.   This will
          be the same as the  name of the file if it  was created
          with either of the monitor commands SAVE and SSAVE.
     3    The login PPN of the job that created this file.
     4    The record offset for this file.  See page 279.


    WORD  CONTENTS OF SPECIAL 5 WORDS FOR UFDS

     0    The  password  for  this  PPN,  in  sixbit   and  right
          justified.
     1    The privilege bits for this PPN.  See  the descriptions
          of the privilege bits under the GETPRV UUO on page 178.
     2    The date and  time of the last  login by this  PPN, not
          counting logins  using the  delimiter period  (.).  The
          date is in the left half in system date format, and the
          time is in the right half in minutes after midnight.
     3    Bits  0:8 (777000,,0  bits)  of this  word  contain the
          default protection for this UFD.  If bit 9  (the 400,,0
          bit) in this  word is on, then  this PPN is  allowed to
          log in from remote locations without giving  a password
          and this  PPN is  not given the  LUP privilege  when it
          logs in.
     4    The record  offset for  this UFD as  a file.   See page
          279.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;WRITE SPECIAL 5 WORDS OF FILE INFORMATION
        11              ;This function takes SKIP return on success.
        <address of 5-word block to be written out>


Function  11 for  a disk  MTAPE  writes out  the special  5  words of
information into  the retrieval  for the file  open on  this channel.
The address of the 5 words you want written out should be in the word
at ADR+2.  If this function  succeeds, the skip return is  taken.  If
there is no file open on this channel, the direct (error) return will
be taken.  You must have the DAW privilege to execute  this function.
The  information  kept in  the  special 5  words  is  described above
separately for normal files and for UFDs.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;READ FLOPPY DISK
        12              ;This function takes SKIP return on success.
        <address of 200-word block to receive diagnostic program>
        <floppy disk address>


Function 12 for a disk  MTAPE reads a 200-word block of  a diagnostic
program from the floppy disk into your core image.  The word at ADR+2
should contain  the address  in your  core image  where you  want the
diagnostic program deposited.  The floppy disk address from which you
want to read should be  contained in ADR+3.  This function  takes the
skip return  if it is  successful; if there  are any I/O  errors, the
direct return is taken.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;EXECUTE DIAGNOSTIC PROGRAM
        13              ;This function takes SKIP return on success.
        <address of 200-word block containing diagnostic program>
        <address of 4-word block for error codes>


Function 13 for a disk MTAPE sends a 200-word diagnostic program from
your core image to the  disk controller to be executed and  returns 4
words of  error code  that resulted from  running the  program.  This
function takes the skip return if it is successful; if there  are any
I/O  errors, the  direct  return is  taken.   You must  have  the DAW
privilege to execute this function.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;READ FILE RETRIEVAL
        14              ;This function takes SKIP return on success.
        IOWD   <word count>,<first address>


Function 14 for a disk MTAPE  reads up to 40 words of  file retrieval
into the user's core image.  The  number of words to be read  and the
address where they are to go  should be indicated in an IOWD  word at
ADR+2.  There must be a file open on this channel.  If  this function
is successful,  the skip  return is taken;  if no  file is  open, the
direct (error) return is taken.  If you use this function to read the
retrieval of a file on the disk area [1,1], then the special  5 words
of file information for that  file will be returned as  zeroes unless
you have the INF privilege.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;COMPARE ONE OF 5 SPECIAL WORDS OF FILE INFO
        15              ;This function takes SKIP return on success.
        <number of the word you want to compare with, from 0 and 4>
        <data to be compared>


Function 15  for a  disk MTAPE compares  a data  word from  your core
image with  one of the  special 5 words  of file information  for the
file open on  this channel.  Which word  you want to compare  with is
indicated by a number from 0  to 4 in ADR+2.  The data word  you want
to compare against the magic word should be located at ADR+3.  If the
words compared are the same, this function takes the skip return.  If
the words are different, or if there is no file open on this channel,
then the direct return is taken.  The information kept in the special
5 words is described above separately for normal files and  for UFDs;
see  disk  MTAPE number  10  above  ("read special  5  words  of file
13.1     I/O Devices          The Disk (DSK and new-style UDP)    282



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;INCLUDE RECORD IN FILE
        16              ;This function takes SKIP return on success.
        <record number>


Function 16 for a disk MTAPE allows you to include an existing record
in the word count for a file.  This is useful if you have  managed to
write out some data  to extend a file  but the file was  never closed
(system crash, etc.).  The number  of the last record you  wish added
to the file should be in ADR+2.  If this function is  successful, the
skip  return is  taken and  the  USET pointer  for the  file  is left
pointing  to the  indicated  record with  IODEND (end  of  file flag)
cleared.  (If the record specified is not beyond the end of the file,
the only result will be to have changed the USET pointer and  to have
cleared IODEND, and the skip  return will be taken.)  If there  is no
file open on  this channel, or if  the record you specified  does not
exist, the direct (error) return is taken.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;UPDATE RETRIEVAL
        17


Function  17  for  a  disk  MTAPE  forces  all  pointers  and  header
information for the file being written on this channel to be updated.
This  is mainly  useful  when extending  a file  in  Read-Alter mode.
After this function has been executed, all the data written  into the
file is  included in the  retrieval.  So if  the system  crashes, the
word count for the file will be up to date.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;GET RECORD OFFSET
        20
        <record number returned here>
        <physical file length returned here>


Function 20 for  a disk MTAPE returns  the physical record  number of
the first  logical record  of the  file open  on this  channel.  This
record number is returned at ADR+2; the physical length of  the file,
including any hidden records,  is returned at ADR+3.  See  the record
offset feature on page 279.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;SET RECORD OFFSET
        21              ;This function takes SKIP return on success.
        <physical record number of first logical record>


Function 21 for a disk MTAPE is used to set the record offset for the
file open on this channel.  The physical record number of  the record
which is henceforth to be considered the first logical record  of the
file should be in the specified at ADR+2.  If this function succeeds,
the skip return is taken.  If there is no file open on  this channel,
or if  some other  error occurs,  then the  direct (error)  return is
taken.  See the record offset feature on page 279.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;GET FREE BLOCK COUNT
        22
        <address of word to receive result>


Function 22 for a disk MTAPE is used to get the count of  free blocks
on the device.  The word  at ADR+2 should contain the address  of the
word into which the free block count is to be placed.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    SIXBIT /GODMOD/ ;GET SATID
        23
        <address of word to receive result>


Function 23 for a disk MTAPE is used to get the SATID of  the device.
The word at ADR+2 should  contain the address of the word  into which
the SATID  is to be  placed.  The SATID  for a UDP  is a  SIXBIT name
which is intended to agree  with the name written on the  pack label.
This is not to be confused with the UDP password.
                             13.2  TTYs


Here are the meanings of some special bits in the TTY I/O status word
(device  TTYn, n=0  to  144).  For  meanings  of bits  common  to all
devices, see Section 2.6.

    BITS   OCTAL         NAME      MEANINGS  OF  1'S  IN  TTY I/O
                                   STATUS WORD

    0      400000,,0     TTYIOW    The  job  using  this  TTY  is
                                   waiting  for  some  input from
                                   this TTY.

    1      200000,,0     SNKWAT    The job  attached to  this TTY
                                   is waiting  in the  SNEAKW UUO
                                   for a character to be typed on
                                   the TTY.

    2      100000,,0     TTYHLD    Typeout on  this TTY  is being
                                   held.   See the  PPHLD  UUO on
                                   page 127.

    3      40000,,0      IMLTTY    This  TTY is  an IMLAC  in TTY
                                   mode for the next character.

    4      20000,,0      SYNC      An  activation  character  has
                                   been seen on this TTY.

    5      10000,,0      TOIP      Typeout is in progress on this
                                   TTY.

    7      2000,,0       TTYDTC    This  is  a  detached  TTY DDB
                                   (not connected to any TTY).

    8      1000,,0       DDTM      This  TTY   is  in   DDT  mode
                                   (activates       on      every
                                   character).

    9      400,,0        TPMON     The  terminal  is  in  monitor
                                   mode.   This  bit  is  usually
                                   turned  off when  your  job is
                                   running, but  you can  make it
                                   stay on by giving a  CSTART or
                                   CCONTINUE   monitor   command.
                                   When  this  bit  is  on,  your
                                   program  will not  be  able to
                                   get   any   input   from   the
                                   terminal   because   all   the
                                   characters  will  be  going to
                                   the monitor's command decoder.

    11     100,,0        USRB      TPMON will be cleared when the
                                   current output finishes.

    26     0,,1000       IOSUPR    Control-O   ([ESCAPE]   O   on
                                   displays)   has   been  typed.
                                   When this  bit is  on, nothing
                                   your  program  outputs  to the
                                   terminal  will  be  typed out.
                                   You  can  clear  this  bit  by
                                   doing any TTY  input operation
                                   or by re-initializing  the TTY
                                   with an  INIT or an  OPEN.  On
                                   teletypes, a  second control-O
                                   will  clear this  bit  as will
                                   [BREAK] O on displays.

    27     0,,400        NOECHB    Characters   typed    to   the
                                   program   running    on   this
                                   terminal  will  not  have  the
                                   CONTROL and META  keys echoed.
                                   These  keys are  always echoed
                                   when  the  TTY  is  in monitor
                                   mode   (TPMON    bit   on--see
                                   above).  The NOECHB bit can be
                                   turned on and off only  by the
                                   INIT  and SETSTS  UUOs, except
                                   that  a RESET  (see  page 250)
                                   will  clear  this   bit,  thus
                                   turning echoing of CONTROL and
                                   META back on.

    28     0,,200        NOECHO    Characters   typed    to   the
                                   program   running    on   this
                                   terminal will not be echoed to
                                   the  terminal by  the monitor;
                                   see Section 3.1.  This bit can
                                   only be  turned on by  UUO.  A
                                   RESET  (see  page   250)  will
                                   clear  this bit,  thus turning
                                   this type of echoing back on.
                       13.3  The Line Printer


The line printer (device LPT) has its own character set which differs
slightly  from  the  system ascii  character  set  (see  Appendix 6).
Because of  this, the  system normally  does character  conversion to
insure that what you get is  what you want.  However, the LPT  has no
ALTMODE character; ALTMODE (175) always prints as CLOSE BRACE (}).

You  can  get  the  line printer  to  print  one  of  several special
characters  or to  execute  one of  several  special carriage-control
functions by sending a 177 character followed by one of the  codes in
the following table.

    CODE  CHARACTER (OR FUNCTION) IF CODE PRECEDED BY 177

    000   Center dot.  (A period moved up to center it on the line.)
    011   Gamma.
    012   Small delta.
    013   Integral sign.
    014   Plus-or-minus sign.
    015   Circle-plus sign.
    020   Skip to top of double form (TODF).
    021   Space down 1 line; write over page boundary.
    022   Space down 3 lines.
    023   Space down to next 1/2 page boundary.
    024   Space down to next 1/6 page boundary.
    177   Backslash.

Line printer paper  has =66 lines/page but  the LPT usually  skips to
the top of form after =54 lines.  This automatic page ejection can be
overridden by use of the '177&'21 character in place of linefeeds.

If  you initialize  the  line printer  with  the LPTNCC  bit  on (bit
32--the 0,,100 bit) in the I/O status word, then the  conversion from
system ascii to line printer  codes is inhibited.  In this  mode, you
get the following differences in characters:

    CODE  MODE 0 CHARACTER   MODE 100 (LPTNCC) CHARACTER

    030   _  (underline)     ←  (left arrow)
    032   ~  (tilde)         ↑  (up arrow)
    100   @  (at sign)       `  (left quote)
    134   \  (backslash)     ~  (tilde)
    136   ↑  (up arrow)         circumflex (similar to LPT's tilde)
    137   ←  (left arrow)    _  (underline)
    140   `  (left quote)    @  (at sign)
    174   |  (vertical bar)     overline (similar to LPT's tilde)
    176   }  (close brace)   |  (vertical bar)

Finally, under normal circumstances, if the line printer runs  out of
paper, gets jammed, or suffers some other physical ailment,  you will
get a system  error message from which  point you can  CONTINUE after
correcting  the  situation.   If, however,  you  initialize  the line
printer with the  HNGTRP bit on (bit  28--the 0,,200 bit) in  the I/O
status word, then when the LPT is ill an error bit will be  turned on
in the LPT I/O status word and the error return will be taken  by any
OUTPUT UUO you try; no error message will be printed.
                     LPT I/O Status Word Summary


    BITS   OCTAL         NAME      MEANING OF A 1

    26     0,,1000       SUPRFF    Suppress  the  TODF   (top  of
                                   double   form)    that   would
                                   otherwise        automatically
                                   precede   the   first   output
                                   following   a    CLOSE;   also
                                   suppress the three  TODFs that
                                   normally   occur   at  RELEAS.
                                   This   feature   is   provided
                                   especially  for  programs that
                                   use   special   forms,   e.g.,
                                   labels.  Users of this feature
                                   should explicitly send  a TODF
                                   ('177&'20)  to the  LPT before
                                   the final  RELEAS in  order to
                                   initialize  the  LPT  for  the
                                   next user.

    28     0,,200        HNGTRP    No   error  message   on  hung
                                   device (see above).

    29     0,,100        LPTNCC    No  character  conversion (see
                                   above).
                            13.4  The XGP


The Xerox Graphics Printer (device XGP) provides a means of  making a
hardcopy listing of virtually any drawing that can be expressed  as a
one-bit raster.  The XGP accepts as data a bit array  describing each
scan  line that  is printed.   Each scan  line is  approximately 1700
bits; scan lines are spaced at about 200 per inch along the paper.  A
picture is built by sending  successive scan lines to the  XGP.  (The
number of bits per  scan line and the  number of scan lines  per inch
are adjustable on the XGP and hence are not necessarily constants.)

There are presently  two distinct modes  of operating the  XGP: video
mode and character mode.
                             Video Mode


In video mode, 36-bit words are interpreted as video data.  Words are
grouped together into portions of a  scan line by the use of  a Group
Command Word (GCW).  The GCW  precedes the data portion of  the group
and specifies how many  words of video data  are to be found  in this
group.  Also the GCW allows the video data to be  positioned anywhere
along the scan line.  The exact format of the GCW is given below.

    BITS   OCTAL         NAME      VALUES OF FIELDS IN GCW

    0      400000,,0     MARK      If this bit is a 1, then after
                                   the  data  is  sent  the paper
                                   will  be  marked  for cutting.
                                   Paper cutting is not  exact so
                                   a MARK should be  preceded and
                                   followed by several blank scan
                                   lines.

    1:11   377700,,0     LNSKIP    The paper will be  advanced by
                                   LNSKIP   scan   lines   before
                                   printing.  LNSKIP = 1  is used
                                   for  normal,  single  spacing.
                                   LNSKIP = 0     prevents    any
                                   advance to the next  scan line
                                   and  prints on  the  same scan
                                   line as the last group.

    12:23  77,,770000    COLSKP    The column register in the XGP
                                   interface   will  be   set  to
                                   COLSKP  before  the   data  is
                                   transmitted.  This  means that
                                   the  first  data  bit  in this
                                   group  will  appear   in  this
                                   column.

    24:29  0,,7700       unused    This  field  has   no  meaning
                                   currently.   It should  be set
                                   to zero to avoid  confusion in
                                   case some meaning  is attached
                                   to it in the future.

    30:35  0,,77         DWCNT     DWCNT words following  the GCW
                                   will be transmitted to the XGP
                                   as video data (for each bit, 0
                                   means  white,  1  black).  The
                                   word  following   those  DWCNT
                                   words  is  then  taken  to  be
                                   another  GCW.    If  DWCNT = 0
                                   then there  are no  data words
                                   in  this  group  and  the next
                                   word is another GCW.

Modes 17  and 117 are  used for video  data.  These modes  accept the
format that is described above.

In  mode 17,  the effective  address of  the OUTPUT  UUO points  to a
standard dump mode command list.  The command list specifies the data
to send to the XGP.   Each OUTPUT will wait until the  entire command
list is processed  before returning to the  user.  The paper  will be
cut at the completion of each command list.

Mode 117 is like  mode 17 except that  the OUTPUT UUO returns  to the
user while data is being sent to the XGP.  In this mode the  user can
overlap  the input  of one  data block  with the  output  of another.
Three data blocks are needed  in this mode: one being emptied  by the
XGP, another pending, and  another being filled by the  user program.
The first two OUTPUT UUOs will return immediately (having established
the current  and pending  output blocks).  After  the user  fills his
third block and gives an OUTPUT  UUO he will be forced to  wait until
the current block is empty  (at which time the pending  block becomes
current and the  block specified in this  OUTPUT will become  the new
pending block).  When the third OUTPUT returns, the fip¬Mh@AE1←GVA]SYX~)EJAMIKJAi<AkgJ8@A∪\↓mSIK<A[←I∀AiQJ↓1∂ AIKckSIKfAk@Ai↑@D`X``β↓β←?⊗#Mβ?0h(ε&≡↓_$∞→<H∞<8{{LEHλ⊂l≡Y(λ∞=≠⎇;D_Y(←→<Xm≡y9λ
≥H≤≤M||X;-];Yh∧∞≠h_-Nx><aQZ_=LT→_=∀≤Y8,O(→[n$≥~→$⊃tAQC"P-m⎇~→.$≤Y<.]<Y;,]]λ≠ld≠;yT,-d
<h≥
=λ≥
(_{m]8;Y∧
~<⎇∞4λ≥~≡λ≤≠m≥]β"NMh≥~T≥~≤L\(→_.L(_[
|z|h
↑<⎇λ,(→~.=[z;NEHλ∃
(_8nN8;λ∞,<=:.,;9;ND~<c!.~_=∧∞~→(={;8-lλ≠~.>λ→[n$→88m∧_[≠l=h≠=.>λ_Y$∞X;~,D≥z~-L(≥~T_[≠l=h~<aQXY:-lh≠⎇.N≥=D∧∩;H∞<]~,>;_<ED→≠{D}λ≥<lT≥~→$∞x;9$∞~≡<m≤x;λ
Mxx=
≥{H~-a"↑;n↑H≤≤M||X;$[|H
]|Y(∞M_;H
⎇Y(_m⎇;8;LD≠~<nEC"C!);H≠-|→(&⊗h≡;nTλ≠=.>λ→≠d(⊂s	zq(∃*Yhλ_,n→<H∞M→(≠≡⎇λ∪jZ∀∃5∧∧≥≠hm|Xy!Q]~→$∞≤X;N=:<|m≥{H≠ldλ_;
D_]9Ll<\h∞Mh≥~Tλ⊗⊃j¬Hλ∩.D~<h∞
||z,-→(λ∞M_=λ⊃"]<l↑H≤≤M||X;$
8>(
m⎇λ_LT_8[T≥≠h∞><≤≠∂∀→_=∀→X<nD→;[n\zλ~-dλ≠;lL(,&uC"R-d≥~~.4→=Y-nλ≥
(≤_.<H≥m≥≠λλ,(_⎇.D≥z→.,=Y<D∞~→(L=_(∞.;\h∧
⎇=D∧⊂#"N z0z:\P⊂14]⊗⊂∀1~z⊂⊂→
VVz4→P_⊗⊗___⊂λ14z⊗λ$gj"S"∀V⊂λ4yP⊂≤97{4Y2r⊂;Z4qtεB;py7≤P:42H897s\0vP⊂≥40z⊂≥44yP~0yP7Xqzy9→r↔⊂⊂λ*44yH14z⊂~yP9r]⊂⊂7w≠<P4wβE6wr→P_X[H;t2wλ:42P→0z0P≤:w9P≠zz⊂0[2⊂77H!f'iQP40yH12rwλ27w2KεEβ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂!t_y0qz→y⊂&wY2FEεBεE$wλ1t0y_qz2yλ6wr2K⊂⊂:4→P,#hλ1pw⊂λ12P:\rr⊂:≠P⊂89~w:⊂:→|:⊂:\tw3Pλ7w2P≠yεE6[y2P3≠w:9Pλ0w2⊂≥7P29_{P⊂;→qz7y≤W⊂⊂&[r2yP⊂⊂0w→⊂_YP_y2P⊂≥42P1Z0y0q]2yεE≠wr2yH37y⊂≥42P,⊃h↔⊂⊂∩w⊂⊂:~2yrP≠wr2yK⊂2pqZ⊂→[⊗X4z⊂;[y2⊂⊂~yP4w≥2y89→z2rεB0yP3~{2P≠Kq4z⊂_<z2yK⊂⊂*4→y2P⊂~yP77H34|2Y⊂6px≤4w3P_2z;rYw⊂⊂1≡z2P;_v:ryCE0w2λ80y:~qzv0\⊂3y0\44qP≤|vq7[9W⊂⊂λ*42P→y0x4~qP9|[q7v⊂→7y⊂0[<P⊂1≡z2P4\FE22Y4w2rλ1<P:~2P1z\92w:λ37w:λ4w⊂:\rW⊂⊂⊂ry:0Zw⊂1<]2P;0[:ryP~0{2P≤x2qtXvεE6Ypw4w→yP1w[9tyz→w:⊂⊂≥tz4⊂_yqttK⊂⊂0w→⊂7w2H1<z2H⊂;0v≥rV⊂7Xz0v⊂λ_[[Vλ4yFE≥yrr⊂λ0yP⊂_w⊂2yXpx2Pλ;t4qZ⊂⊂3t]2yP⊂≥42P1≡z2yPλ:40zλ⊂37v≠7{P⊂_P9x2XtpvεB6rpw~w3WεBεE!t_y0qz→y⊂6wY2P82\6tz9H;2qz≠y9P⊂_w2⊂6]v:4x≠2P0q]4{2P≥2|:⊂λ64w2\W⊂⊂*~2FE9↑yz2vH6zyzλ12P⊂≤92yr[:2r⊂≥tz4⊂≥2qz7\9P⊂0[2⊂:2↑:⊂9w\:2r⊂λ1<P0\qrw2~w3FE≥0v:r\P7s⊂⊗X⊂∀:≠x⊂9qXw⊂⊂6~w2P7≥vq2yλ37y⊂≥2|:⊂≠y⊂⊂;→qz7y≤T]P7]42y;ZyrVεB:42P≠zz8:]⊂;tv≠⊂12P≥y7w3KεEεE∃42P≠Kq4z⊂_<z2yH⊂:0uYw⊂39≠vP:4→P:yr\∪yP⊂_:s32\⊂4w⊂_t0y0Xz2y⊂λ6wr2H0y2FB4w:2\892z→r⊂0yH37v6≠{y]εBεE⊂⊂λ⊂!<z→P+0v≥rP⊂⊂λ⊂⊂*y]pv⊂6Ypw4w→P⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂⊃yqpx→P6rp[4w3FB⊂⊂⊂⊂βE⊂⊂⊂λ⊂⊂⊂⊂⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂':v≠⊂⊗VP_<z2P~yP4s[7y2rλ⊂⊂⊂⊂λ⊂⊂⊂'≠y6pvβE⊂⊂⊂λ⊂⊂⊂⊂P⊂⊂⊂λ⊂⊂⊂⊂λ⊂'7y≠pv⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂,⊃h⊂"iP`h"PFE⊂⊂λ⊂⊂⊂⊂λ→⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂'7\6pv⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂⊗#h⊂"Ta`h"H→εE⊂λ⊂⊂⊂⊂λ⊂→P⊂λ⊂⊂⊂⊂λ⊂⊂⊂'≠y6pvλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ,#h⊂⊃ia`h⊃P→FEλ⊂⊂⊂⊂λ⊂⊂~⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂∪7y6p[⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂,#hλ"ia`T"P~εB⊂⊂⊂⊂λ⊂~]_L⊂⊂⊂⊂λ⊂⊂⊂⊂λ'7y6Xv⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂)2\ry;2YεE⊂⊂λ⊂⊂⊂⊂XP⊂⊂λ⊂⊂⊂⊂λ⊂⊂* P⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂∪7y6p[εE⊂⊂λ⊂⊂⊂⊂Y⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂&#λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂∪7y6p[εE⊂⊂λ⊂⊂⊂⊂YP⊂⊂λ⊂⊂⊂⊂λ⊂⊂'7\6pv⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂∀2yry≥2rεEλ⊂⊂⊂⊂λ⊂_Z⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂⊃#⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂'7y≠pvεEλ⊂⊂⊂⊂λ⊂_ZPλ⊂⊂⊂⊂λ⊂⊂⊂⊂⊂i⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂'7y≠pvεEλ⊂⊂⊂⊂[≥→[H⊂⊂⊂⊂λ⊂⊂⊂⊂∪7y6p[⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂)2yYy;2rβE⊂⊂⊂λ⊂~_≥[[⊂⊂λ⊂⊂⊂⊂λ⊂'7y≠pv⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂'≠y6pvβE⊂⊂⊂λ⊂⊂_[MP⊂⊂⊂λ⊂⊂⊂⊂λ⊂"iaPh"P⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂'≠y6pvβEεE'∪i&`fλ6rpw≤P⊂:4_z⊂:4→P22s~w4z4[w⊂⊂7Y⊂:44\P1<z→P⊂4wλ:42Pλ1zy9→w:⊂3≠w:εE≥tv6⊂_2P89~w:2r⊂⊂$sλ:44yH⊂1<z→P4yP≥w22s~w2r⊂~w⊂:4→P1zy≤2w:⊂λ37w:⊂4zεB;tv6λ12P4Yw7y2Y↔εEεB"ia`T"P⊂6Ypw9Pλ:40zλ:42Pλ72|:λ⊂1<z→P;tv≠⊂⊂40]2P⊂0[⊂⊂0v≥2y70]2P6rXw4w3CE9rv→qz2rλ397vH:42P_wv:v[⊂"iaPh"P&Q`g$g⊃WεEεB* a⊂≤97r:XryP0H⊂1wv≥vw⊂9Yv2qzλ:7P:~2P⊂3~y9z⊂_wv:v[⊂;t4Xt⊂4yH⊂0z⊂≠2pyzβE:42H;tr:~⊂7s⊂_P160[5P:7H:42P≤4st:λ7s⊂:~2P1z\92w:λ1wv:[w⊂87\tz4w[⊗⊂0w→εE9w[rP6z[:4x6→P7s⊂∞⊂160[5P;tY:49P≥7P:4→P94sZ:⊂7sλ:42P≠2s:⊂≠py3t[↔εEεB&#⊂0Xz4{0]2yP:~2P1z\92w:λ:2|:λ64w2K⊂⊂*4→P1zy≤2w:⊂≥2|:⊂≥tv6⊂λ12P8]rzrrβE:7Pλ12P8≤4w:2Y⊗⊂⊂0[2⊂⊂:~2w⊂:~2P⊂2→s0zv≥⊂⊂,V\7ytz~ww⊂7Y⊂⊂:2↑:⊂⊂;Zv6⊂1→FE0r≥0w1rY⊂1<P≥42P7≥vq2yλ7s⊂9Xpw⊂6~w2yP~z⊂:0ZryP:≠P290]P:44\P:2|≥⊂64w→VεE8≠:yP⊂≥42P7≥vq2yλ⊂7s⊂≤qpw⊂λ64w2\P9x2Xts4rY⊂⊂1<H:42Pλ1zy9→w:⊂4[:2y6~w2FE≤x0qt[3P;0[:rP,∪$g"P
9rrP→:w1z~ww9P⊂0w2λ→VVy→pr⊂0[2⊂⊂9Yz⊂6p\3tw9KVwsεB:42P⊗#h⊂&U h"P∃jgP7[⊂80sYP→≤X
W⊂⊂*~4yP7→{P22Y0zv:λ,Vx7\tz4w[⊂⊂;t[6⊂12CE:yrY⊂37yλ:42Pλ72|:λ:2|:λ64w2H∀:w6→yyP⊂_t0w3Yr⊂1<H0P;2Xz7y⊂λ1wvvXw2⊂7\εE"iP`h"PTWεEβE##⊂_qz4{_z2yP≥42P⊂_zy92[:⊂:2↑:⊂64[2V⊂:~2w⊂⊂_pzyr\P0P8_srP⊂→u2qzλ0s:2\εE:4→P1zy≤2w:⊂≥2|:⊂≠4w2P~yP89~w:2r⊂0w2λ9rz9H:42P→2s0z[:⊂⊂,Kx7yt]4ww⊂≥7FE:~2P34\9z⊂9Xpw⊂6~w2P⊂_2v7{H:42P≥7x⊂7Y⊂⊂80YrP6p\3tw⊂
*&`i
P7w⊂λ:42P≠2{FE≤0srWλ⊂)rrH0v9wH3:w1]4ww9H→⊂⊂0[2⊂→VKy2prλ0w2⊂≤rz⊂6Xy3tw≤VVwsλ⊂:42H,#hεB&j h⊃P*jgH7w⊂8_srP→∞X⊂37\⊂:42H2s32Xz9P7Y⊂##↔βEεE!T⊂1pz\ryP0H1wv:[w⊂9r[2qz⊂≥7P:4→P1zy≤2w:⊂≠2s:⊂≠py3t[⊂:7P_2P3r[2y0z→r↔εEβE,#hλ"ia`T"P_P
∪X[[I∪X__JP1pz\ryP:~2P⊂7→|:⊂≠Kq4z⊂_<z2P≥7P12H92prλ⊂0yP_FE9x→qtpvλ7x2y_z4wwλ1wr2K⊂⊂*4→P37v≠7{tw→P1wr→yP0y→P4vx≠2vrw≥2r≥εBεE⊂⊂λ⊂!gb⊃P⊂⊂,⊃h⊂"iP`h"PP&b`S$g#FBεE⊂⊂λ⊂_≥_MP⊂⊂#∪g*⊂)Qf"aj⊂⊂*4→P1wr→V⊂_⊂≥7P_[K⊂4yP≥0urwλ0yP⊂≥42P3≠w:εEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ4r2w≥4s4qXz4wwλ7:vq→y⊂7sλ:42P→7w:⊂≥7P12H:yrrεEεEλ⊂⊂⊂→≥→[Pλ)2yr\;2r⊂→7y⊂3≥z:y2H:yrWβEεE⊂λ⊂⊂~_λ⊂⊂⊂⊂⊂gf*fS⊂)bf⊃aj↔⊂λ*42P≠2|:⊂λ_Z⊂1~z9P∀⊂1<z→yTP⊂_y2P:_urwεB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂6wr≥v7P≡M_≤[⊂λ0yP:~2P0q≤wv:z→P⊂,⊗\7ytz~ww⊂:≠P⊂89~w:⊂0]εE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂7→|:↔⊂λ⊂*42H⊂4w:→w:4w[⊂⊂4yH⊂:7Pλ0v67]P⊂0y_4z90\<V{tY:4εEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ9x0qYyP37\⊂:2|≥⊂5:y]4s4qXz4wwεEεEλ⊂⊂⊂~P⊂⊂⊂λ*g""T)agi⊃W⊂⊂⊂∃42P7→|:⊂⊂
Vq4zλ1<z2H⊂4yP≥0urwλ⊂4w⊂≥;wSyCE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂1w[x62vYw:⊂0\P:42H92v0]4{2P≠:vq2\⊂7s⊂≥42P9Xpw⊂⊂≠4w2P≠wεE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂≥t4qtλ⊂:42H⊂⊂:w→2y9q[y2P⊂~yP⊂⊂≥7P⊂7Xqzy⊗λ⊂⊂;t→y2P⊂≡2y7FB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂92x≤2yrw≥9P:4→P10yYv4w2H⊂7s⊂≥42P:→|:⊗⊂λ72sp]4{2P≥0v:r\FE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂9→x92yYw:⊂9Xpw⊂6~w2yPλ0q7{→P:42H10yr[4w2Pλ0w2⊂≤7ytz~{2FEλ⊂⊂⊂⊂λ⊂⊂⊂⊂λ;0v:YyP⊂9Xpw⊂⊂≠4w2yH12v7]P⊂4z⊂⊂⊂*~2P72↑:⊂⊂_M⊂⊂14]9P∀→βE⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂1<]2yTP_y2P⊂≥0urwλ6wr:[7P⊂≡M_≤[⊂_yP⊂:~2P62[3z4⊂λ7s⊂:~2FE⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂≥w22y≤qwy2K⊂⊂$sλ⊂:42H:w22\9qwy→P⊂1w[vpw2λ4yP⊂≥42P3~y9zεB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂:44[3P27[2P7wλ0P72]P:2|≥⊂64w→V⊂:4→P10yYv4w2H⊂:yrY⊂;tv≠εE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂1→P:42H10yr[4w2P≠s⊂:4→P1zy≤2w:⊂→7w:↔βEεE⊂λ⊂⊂~→λ⊂⊂⊂⊂∪$g"P∀h abK⊂⊂⊂*~2P1z\92w:λ:2|:λ⊂64w→P4yPλ0qz4]0z2rλ0w2εB⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂8zr]rr⊂:≠P894[:↔⊂⊂∃42w⊂≥42P2→s0zv≥⊂,Vx≠ytz4[w⊂⊂7Y⊂:2|≥εE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂4\P0r;_w1rrλ1<P⊂≥42P7≥vq2yλ7s⊂⊂≤qpw⊂≠4w2yH4z⊂⊂≥0uryH:7FEλ⊂⊂⊂⊂λ draw this  text line,  plus the  number of  scan lines
           given  by  the  next  byte.   Thus,  this  is  like LF
           (linefeed)  but  allows  using  a  different interline
           spacing value (XLINE) for this one text line.

    43     BASELINE ADJUST.  The next  7 bits are taken  in two's
           complement as the  baseline adjustment to  the current
           font.  The  adjustment sticks  until reset  by another
           BASELINE ADJUST or by a FONT SELECT, or until modified
           by  a  RELATIVE  BASELINE  ADJUST  (52   below).   The
           intention is to allow a font to be used for subscripts
           and superscripts.  Increment baseline for superscript,
           decrement for subscript.  Values 0:77  are increments;
           100:177 are decrements: 100 means -100, 177 means -1.

    44     PRINT THE PAPER PAGE NUMBER.  The paper page number is
           set to 1 by an FF (formfeed).  It is  incremented each
           time  the paper  is cut.   The decimal  value  of this
           count is printed.

    45     ACCEPT HEADING TEXT AND  PRINT IT NOW.  The  next byte
           is a count of the  number of bytes of heading  text to
           follow.   Those bytes  will be  read into  the heading
           line, which will be printed 1) now  and 2) immediately
           after an FF is inserted to begin a new page because of
           an LF  (linefeed) or LINE  SPACE command that  has set
           the Y-position for printing to a scan line  beyond the
           end of the page  body (as defined by PMAR).   Only one
           text line  is allowed in  the heading, which  must end
           with an LF or a  LINE SPACE (unless the byte  count is
           zero).  A zero  byte count means flush  any previously
           specified heading text.

    46     START UNDERLINE.   Set the left  end of  an underline.
           See the STOP UNDERLINE command below.

    47     STOP  UNDERLINE.   The  next byte  is  taken  in two's
           complement as the relative number of the scan  line on
           which the underline is to be written (same  meaning as
           in UNDERSCORE--41 above: zero represents  the baseline
           of  the  text, negative  values  represent  scan lines
           above  the  baseline and  positive  values  scan lines
           below it).  The extent of the underscore is defined by
           this command  and the  START UNDERLINE  command above.
           If this command is  not preceded by a  START UNDERLINE
           command,  the  results  will  be   unpredictable.   No
           underline  will happen  until this  command  is given.
           Beware of column selects.

    50     SET   INTERCHARACTER  SPACING.    The  next   byte  is
           interpreted  as the  intercharacter spacing,  which is
           not  currently  used  for  anything.   This   code  is
           included for compatibility with MIT.

    51     STOP UNDERLINE OF  SPECIFIED THICKNESS.  This  is just
           like STOP UNDERLINE  (47 above) except that  the first
           byte  after  the  51  is  interpreted  as  the desired
           thickness  (in scan  lines) of  the  underlining.  The
           second byte after the 51 is taken in  two's complement
           as the relative number of the first scan line on which
           the underline  is to  be written  (same meaning  as in
           UNDERSCORE--41 above: zero represents the  baseline of
           the text, negative  values represent scan  lines above
           the baseline and positive values scan lines below it).

    52     RELATIVE  BASELINE  ADJUST.   This  is  the   same  as
           BASELINE ADJUST (43 above) except that the baseline is
           adjusted  relative  to any  previous  adjustment.  The
           next  7  bits are  taken  in two's  complement  as the
           relative baseline adjustment to the current font.  The
           adjustment  sticks until  reset by  a  BASELINE ADJUST
           (43) or  a FONT SELECT,  or until modified  by another
           RELATIVE BASELINE ADJUST.

XGP ESCAPE 2 ('177&'002) causes the next 7-bit byte to be taken  as a
twos-complement   column   increment.   Values   0:77   are  positive
increments;  100:177 are  negative  increments: 100  means  -100, 177
means -1.

XGP ESCAPE 3 ('177&'003) causes the  next 2 bytes to be taken  as the
scan line number on  which to start this  text line.  Scan line  0 is
the first scan line on the page (immediately following the cut).  The
topmost scan line of the present text line will be placed on the scan
line indicated in  this command.  If there  is no current  text line,
the next  text line will  be put  there.  The system  is not  able to
queue  text  or vectors  for  scan line  0  of the  first  page  of a
transfer; if it is  necessary to queue things  on scan line 0,  it is
recommended that a page be output prior to that attempt.

XGP ESCAPE 4 ('177&'004).  This  escape is used to specify  a vector.
It is followed by =11 bytes describing the vector:

    2 bytes of Y0 Number of first scan line of vector.
    2 bytes of X0 Column position of left edge of first scan line
                  of the vector.
    3 bytes of DX Delta X: 1 bit  of sign; 11 bits of  integer; 9
                  bits of fraction.
    2 bytes of N  The number of  scan lines on which  this vector
                  is visible.
    2 bytes of W  The column width of each scan line.


The  system  must  be  presented  with  vectors  and  text  sorted by
ascending values of Y0.  Otherwise, the output will be wrong.


The escape significances of codes 5 through 10, 13, and 16 through 37
are not defined at the present time but are reserved for future use.
                     XGP I/O Status Word Summary


    BITS   OCTAL         NAME      MEANING OF A 1

    18     0,,400000     IOIMPM    Illegal   mode,    PDP-6   not
                                   responding,    or    XGP   not
                                   responding.

    19     0,,200000     IODERR    PDP-6   detected   error:  XGP
                                   reporting something wrong (out
                                   of paper, etc.), buffered mode
                                   data  miss, or  text  line too
                                   complex.

    20     0,,100000     IODTER    Font Compiler lossage.

    25     0,,2000       IOTEND    Data  ran  out   before  CLOSE
                                   given in mode 117.
                            XGP MTAPE UUO


The  MTAPE  UUO  is  used  to  provide  extended  control  and status
reporting of the XGP.  MTAPE is not synchronized with the data stream
except that certain MTAPEs imply CLOSE before their operation.
MTAPE           [OP=072]
--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    <function number>
        <other data depending on function number>
        ...


An  MTAPE which  specifies a  channel  on which  the XGP  is  open is
interpreted as  follows.  The  effective address  of the  MTAPE (ADR)
points to a  word containing a  function number which  determines the
meaning of the UUO.  The  data at ADR+1 and following depends  on the
function selected.

    FUNCTION     MEANING

        0        Return error status.
                 ADR+1/ Major error code.
                 ADR+2,3,4/ Error data (see below).

        1        Font compile and select.
                 ADR+1/ Font file name in sixbit.
                 ADR+2/ Font file name extension.
                 ADR+3/ PPN of font file.
                 ADR+4/ Font identification number: 0:17.

                 Note: This function skips if there is no error.

                 The  font  named  will  be  read  by   the  font
                 compiler.    It  will   be  assigned   the  font
                 identification  number  that  is  supplied.  The
                 identification  number  is  used  only  by  font
                 select commands.

        2        Read margins.                  Names  Current defaults
                 ADR+1/ Top of page margin.     TMAR           =200
                 ADR+2/ Page body size.         PMAR          =1796
                 ADR+3/ Bottom of page margin.  BMAR           =200
                 ADR+4/ Left side margin.       LMAR           =200
                 ADR+5/ Right side margin.      RMAR          =1650
                 ADR+6/ Interline space.        XLINE            =4

                 TMAR is the number  of scan lines left  blank at
                 the top of each  page; this many scan  lines are
                 skipped after every FF (formfeed).  PMAR  is the
                 number of scan lines in the page body,  which is
                 the area used for printing text on each page; if
                 you attempt to start a text line beyond  the end
                 of the page body, then a FF is inserted in front
                 of that text line (note that the last  text line
                 on a  page can extend  beyond the page  body but
                 cannot start beyond it).  BMAR is the  number of
                 scan lines  in the  bottom of  page margin--this
                 area is  left blank at  the bottom of  each page
                 (except that  the last line  of text  may extend
                 into this area).  The  length of a page  in scan
                 lines is TMAR+PMAR+BMAR  unless PMAR or  BMAR is
                 zero.  If  BMAR is zero,  there will not  be any
                 paper cuts.  If PMAR  is zero, there will  be no
                 paper cuts except that when an FF  (formfeed) is
                 encountered, the  blank space specified  by BMAR
                 will be put out and then a cut will be made.

                 LMAR is the  column position (in  raster points)
                 selected  by  a carriage  return.   RMAR  is the
                 column position (in raster points)  beyond which
                 a  character is  not allowed  to start.   When a
                 character would  start beyond  this point,  a CR
                 (carriage  return)  and  an  LF  (linefeed)  are
                 inserted forcing the  character to be  placed at
                 the beginning  of the next  line.  XLINE  is the
                 number   of  scan   lines  left   blank  between
                 successive   lines  of   text  when   a   LF  is
                 encountered.

                 Nominally, the  XGP has  =200 raster  points per
                 inch horizontally and  =200 scan lines  per inch
                 vertically.  Some default margins are subject to
                 change  as the  physical characteristics  of the
                 XGP change.  The default RMAR may be  changed to
                 adjust for  variations in  the number  of raster
                 points per scan  line, and the default  PMAR may
                 be  changed  to  adjust  for  variations  in the
                 number of scan lines per inch (adjusted  to keep
                 the page =11 inches long).  These parameters are
                 changed  manually,  so if  you  observe  the XGP
                 making short or long pages, etc., tell  a system
                 programmer  who  will attempt  to  correct these
                 values.

                 The horizontal sweep of  the XGP is known  to be
                 non-linear; if you try to do exact graphics, you
                 will probably fail.

        3        Set margins (see margin explanations above).
                 ADR+1/ Top of page margin; must be ≤ 37777.
                 ADR+2/ Page body size; must be ≤ 37777.
                 ADR+3/ Bottom of page margin; must be ≤ 37777.
                 ADR+4/ Left side margin; must be ≤ 3777.
                 ADR+5/ Right side margin; ≤ 7777 and > left mar.
                 ADR+6/ Interline space; must be ≤ 3777.

        4        Get status.
                 ADR+1/ The I/O status word for the XGP.
                 ADR+2/ -1 if a data transfer is in progress,
                            0 otherwise.

        5        Pseudo close.  Hardly different from CLOSE UUO.

        6        Set node counts.
                 ADR+1/ Number of text nodes (default: =16).
                 ADR+2/ Number of vector nodes (default: =100).

                 If either node count is zero, the  default value
                 is used for that count.

                 The number  of nodes  needed for  text increases
                 with the complexity of the text (number  of font
                 switches, etc.).  The number of nodes needed for
                 vectors is related to the number and size of the
                 vectors.  Generally the default numbers of nodes
                 is sufficient, and when it is not, there may not
                 be enough  time for the  PDP-6 to do  the output
                 correctly,  even  if  the  number  of  nodes  is
                 increased.

Here are the meanings of the error codes returned from MTAPE function
0.

    MAJOR ERROR  MEANING
      (ADR+1)

        0        No error.

        1        Font Compiler lossage: no job slots.

        2        Font Compiler lossage: no initial response.

        3        Font Compiler lossage: no intermediate response.

        4        Font Compiler lossage: illegal response.
                 ADR+2 contains the FC response:
                   0  Ready.
                   1  Allocation made.
                   2  Compilation done.
                   3  Font compiler error.
                      ADR+3 contains the error type:
                        0  Illegal command.
                           ADR+4 contains the rejected command.
                        1  Not enough core.
                        2  LOOKUP Failure.
                           ADR+4 contains the LOOKUP error code.
                        3  File error -- unexpected EOF.
                           ADR+4 contains last character assembled.
                        4  File error -- character redefined.
                           ADR+4 contains last character assembled.
                        5  Disk error.
                        6  Logical font number too large.
                        7  File error -- other illegal format.
                           ADR+4 contains last character assembled.

        5        Interrupt-level data missed in buffered mode.

        6        XGP hung timeout.

        7        Illegal mode.

        10       Text line  too complex.   The line  compiler ran
                 out of room while compiling a text line.

        11       Out of order.   Y0 of a  vector or text  line is
                 smaller  than the  last item  (either  vector or
                 text) that was  queued.  That is, the  input was
                 not properly Y-sorted.

        12       XGPSER missed.   Somehow, the system  has failed
                 to  start a  vector or  text node  at  the right
                 place.   Possibly  there are  too  many vectors.
                 ADR+2 contains the current scan line number, and
                 ADR+3 contains the desired scan line  number for
                 the text or vector that missed.

        13       Page too long.   You started a vector  below the
                 bottom of a page.

        14       Illegal   vector  parameters.    A   vector  you
                 specified will go off the page.
                             XGPUUO UUO


XGPUUO is of interest only to the Font Compiler.  This UUO is a no-op
for everyone except the Font Compiler.
XGPUUO          [OP=047, ADR=400075]  CALLI 400075
--------------------------------------------------
        MOVE    AC,[CSB,,NSB]
        XGPUUO  AC,


CSB and NSB are the addresses of 20 word blocks.  CSB is  the Current
Status Block.  The Font compiler  reports its state to the  system by
the data it puts in the  CSB before giving this UUO.  NSB is  the New
Status Block.  The system issues commands to the Font Compiler by the
data it stores  in the NSB when  returning to the Font  Compiler from
this UUO.  This  UUO will not return  until the system  has something
for the Font Compiler to do.

Word 0 of the status  block is the opcode.  All subsequent  words are
operands.

  OPCODE   MEANING TO FC FROM SYSTEM     MEANING TO SYSTEM FROM FC

    0      Go away now.                  No-op (ready).
           (System is finished with FC.)

    1      Allocate.                     Allocation made.
           (Word 1 has size              (Word 1 has location
           to allocate.)                 of allocation.)

    2      Compile.                      Finished compiling.
           (File name, ext, PPN          (Word 1 has location
           are in words 1, 2, 3;         of base table.)
           word 4 contains the
           logical font number, 0:17.)

    3      Lock in core.                 Compiler error.
           (System wants to              (Word 1 contains
           send data to XGP.)            error code; see below.)

  Error codes (in word 1 of block):

    0      Illegal command.  Word 2 has the rejected opcode.
    1      Not enough core.
    2      LOOKUP failure -- font file was not found.
             Word 2 has the LOOKUP error code.
    3      File error -- unexpected EOF.
    4      File error -- redundant character.
    5      Disk error.
    6      Logical font number too big.
    7      File error -- other illegal format.
                           13.5  Dectapes


A dectape  (device DTAn,  n=1 to 4)  consists of  a sequence  of 1102
200-word blocks (numbered from 0  to 1101) which can be  allocated to
dectape files.   There are  several formats that  have been  used for
allocating blocks to files.  The format in use at Stanford  is called
OLD DECTAPE FORMAT (or sometimes PDP-6 FORMAT).  Stanford's system is
capable  of  reading/writing  only  the  old  dectape   file  format.
However, the user  can read and/or write  almost any block on  a tape
(block 0  cannot be  written because  of the  hardware) and  can thus
simulate any  format desired  (see the UDSD  bit below).   The system
program TENDMP is provided for reading and writing dectapes in PDP-10
FORMAT (NEW DECTAPE FORMAT),  which is NOT explained in  this manual.
If  you  need to  know  about  PDP-10 dectape  format,  see  a system
programmer, wizard class.
                   Dectape I/O Status Word Summary


    BITS   OCTAL         NAME      MEANING OF A 1

    21     0,,40000      IOBKTL    Dectape  block  number  out of
                                   bounds.

    29     0,,100        UDSD      The  system  should  treat the
                                   tape   as   if   it   had   no
                                   directory.  In this  mode, the
                                   user  can  read  and/or  write
                                   blocks  on  the  tape  in  any
                                   format he desires.   The USETI
                                   and  USETO  UUOs  (see Section
                                   2.14)  can be  used  to select
                                   which block will be  read next
                                   and   which   block   will  be
                                   written  next.  The  UGETF UUO
                                   (see  page 54)  will  return a
                                   word whose left  half contains
                                   the number  of the  next block
                                   to  be  read  and  whose right
                                   half  contains  the  number of
                                   the next block to be written.
                         Old Dectape Format


In the old format (still  standard at Stanford) block 0 is  not used,
block 1 is the directory which contains names of and pointers  to all
the files on  the tape, and blocks  2 through 1101 are  available for
data.

Word 0 of the directory contains:

        <LBU>,,5

where <LBU> is the number of the last block in use on the tape.  When
you do a UGETF UUO (see page 54) this number gets incremented  by one
and the result is  returned as the number  of the block you  may use.
The "5" points to the word within the directory block where  the file
entries begin.

Words 1:4  of the  directory are not  used at  all.  Words  5:174 are
grouped in  4-word entries, one  for each file  on the tape.   Thus a
tape can hold  a maximum of  =30 files in  the old format.   The four
words of a file's directory entry contain the following information:

        <file name>
        <extension>,,<number of first block of file>
        <date file written>
        <value from 4th word of ENTER block when file was created>

A zero entry marks the end of the directory.

For files written in buffered mode, each block contains (at most) 177
words of data, with the first word of each block containing

        <BN>,,<WC>

where <BN> is the  number of the next block  in the file, or  zero if
none, and <WC> is the count of data words in this block.

Files written in dump mode have  200 words of data in each  block and
have  no  block-to-block pointers  or  word counts.   Such  files are
always written on consecutive blocks of the tape.  P∂!K\AB↓kgKd↓oeSi∃f~∃B↓IKGi¬aJAM%YJAS8AIk[@@A[←⊃JXA]<AS]M=e[Ci%←\ASLAgi←IKHAo%iP@AQQJAM%YJ~∃Q↑AS]⊃SGC`&)β#?:β3?;:β'Q↓εKM9↓∧s?K7∞aβCK}≠↔∪W⊗)β≠?∩β←K'&K;≥↓ε#W7Aεk?∪∀hS≠'3/→↓β'~βS=↓πβWQβ&C∃↓β'+7Aβn{∪∃↓ε≠?77∞s⊃↓#>C'∂!αβ←'3bβ←K'&)↓β?/!βS#(h+↔;&KHε*m⊗f*∀
⊗w&t∞FF*mw/↔M∧π>␈,Dε}2∞Mε*∧YjD-∩-F}≡4&.6},Rπ&T∧,uHZ hV≡4ε&}lUbα∧≥dπ&F≡4π>∂∃Dπ&FT∧εf.l}FBε|dπ&FTfNfT∞vNfD&*π,↑G/⊗l\Bαε.α(⊃"S∪iyu4λ,8x=.<(≥~T→[⎇..~λ≥m}Yλ≠ld≥~→$λ3U⊃*$_[≠l=h~<d{|~,\λλ~-n≠h≥
#"YM}<]~∧∞{|Y∧
yHλ∞M→(→M≥→)|d~<Y,>≠|↑$;]≤O∀λ_;LD≥~→-d~;]
tλ≥~T→[⎇..~β"N⎇|Yλ
|H≥~T∪∪si:4λ_MMxzh∞⎇→;H∀∪∪si:4λ~.4→≠{LT→[|D∞~→(m;→+AQ@↓J5∀⊂iJHλλ∧∧λλλ∧∧⊗stπV

k∧λ1∀O&⊗w(λλ83∪∩$ε,c"EU+++%U+++%U+++%U+++%U+++%U+++%U+++%U+++%U+++%U+++!QHλλ∧∧λλλ
Z∀⊂s
$∂_z≥[Y;∧
];8L↑OKβ!!"C"JM→(∃*J⊂s∀D
53h<=<y.4≥~→$~<Y,>≠|↑$
yH≥
(→→,>_<→$
;Z=
≤;~>L\λ≠{D∞~→#!,z_;Ml;λλ
≥Y~8l≡→9λ∞Mhλ_LT_{→,≡Y9D∧λ∃~
≡h≠9,≥\hλ∞M_=λ∞M→(λnY9(-≠xzaQ\≠z-n→<H
≡h≤y.D≥≠h∞
z;]∧∞≠h_MMxzh
n;8Y.$H_-lλ_;
D→Z;T→;]∞-9<h
≥H≥~Q"Y~.,8⎇≠n/(_<LT≡Y<M|9H∧
~→(∧∞_<→$x;H∞M→;H,(λ≤L↑<y9∧<h~,d~=λ∧∞y<Y$#"[L↑h≥_.+Hλ
M~<h
Z3h~.4_(≠Mu;|λm|H_-Mλ→→.m8y<d]=λL8⎇_.<kC! ↓Dλλλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλλε⊗kMH∧	89{L↑~8h
L<→<aQC"C!(_=_$
{H≠,≤{Y=
≤hλ≥≡→<h¬→=Z,<(∪5λ≥Kλ≠GVλλ≥
t*(
≡h≥|M≡≥→;D∧~;Hm;→<aQ]z=
∧λ→8,=λλ→M≥→(λ,:;Yd∞→<[-≥X=→,Dλ≥z.Mλλ_-dλ→;LE;yK,m;→(∧
8<Zedλ∃~Q"[≠l⎇8x;∧;Yλ
|H≥_.(~<d
;Y~,<=→9∧↑(≥∞⎇h_{mny8⎇.M=Y(]Y;le9Z;T≠8<M>c"]m≡~λ≠Mt~;]↑]Y;M≥Yh→≡_+C!!"J∃
(≠8,t≥_<T~<h
m⎇λ_$~<Y,>≠|↑$→=Z,<+Hλ	mh→Z-L;X;,↑h_<LT_<|m|z8=\β"]m≡~λ≠,≤h≥_.(→Z-L<kλ≥Yλ≥
(∪∪iyu4∧λ3U⊃*$_;Y∧
Q3P)X(∃5)}h_<LT≠[k-}≤c"N⎇=~λ
\9h≥≡→<kE⊃"C"HL=_(
⎇H≠8,t≥_<↑h_x-d_Y(∞}Z=≥]H~;D;↑(
|H≥~T≤⎇_-l_<↓2λ⊂6wr→yW⊂⊂⊃:vxεB6wr2H∀6wr→yP⊂_M⊂0w2λ_[TPλ:90w≤vtz9H20x∧a as  one record per  dump mode
command.
                Magnetic Tape I/O Status Word Summary


    BITS   OCTAL         NAME      MEANING OF A 1

    24     0,,4000       IOBOT     The tape is at load point.

    25     0,,2000       IOTEND    The physical  end of  the tape
                                   has  been  reached.    If  you
                                   reach  the  end  of  the  tape
                                   while reading or  writing, the
                                   IOIMPM error bit will  also be
                                   turned on.

    26     0,,1000       IOPAR     The tape  is being  written or
                                   read in even parity,  which is
                                   non-standard.

    27:28  0,,60@@@@@@@@@@@@@@@A)!KgJ@↓io↑@↓ESifAS]I%GCiJ↓iQJ~(@@@@@@@@@@@@@@@@@@@@@@@@@@@@↓iCaJ↓IK]g%irt@@AC]HdA[K¬\@j`+04)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βO#M↓βε+I↓βNs∂!1α↓E↓βn+π;Mβ⊃A@4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ε∪C%1αβπ;⊃α↓M↓βn+π;Mα↓aAAαβC%ph)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓απ3&C?W∨B↓aAAαβC%εKM↓β&C∃β7␈≠P4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β.3≠'∂N+;Q1α↓UUYαβC%αβ'M↓εk?K∀hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβK↔3N3∃Z↓↓↓↓∪↓A↓↓α↓βCJ↓↓↓βO_4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βK.cπS'6+3eβNs↔≠≠N≠'↔;"p4(4R↓↓↓↓∪I↓↓↓α↓A11↓A↓↓α↓↓↓↓∧J>:J≤Y↓↓↓∧s=βK*kK↔π&K;≥↓εKMβSz↓β∃ε#?;∃ph)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓αK∃o∪↔π∪Ns≥β'~βWOW∞c3e↓ε#?;∃ε{84)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β⊗{S!β␈+SCW"βπ;⊃εK;CW"↓β←#.qβπ8hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ↔KK␈⊃β'Mε#↔S↔∨#↔⊃9α↓απ≠&+I↓u4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βS⊗K↔Mβ&C∃βOO≠S↔5ε;'[↔~↓βWAε;⊂4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π≠↔SMε9β↔↔∪?Iβ⊗KQ84P1↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓α6R
α∃αV,yβ≠?∩α7π∨v+S'
¬#πC↔_h(4(hRS#∃αβ≠?3f{←';:↓αVVzβ'M↓πβK?[N#↔⊃↓ε3?Iβ&{';≥αβπ31αβS#∃αβOC↔≡Kπ1β&C';∨_h+;↔≡+OOπ↔Iβ←'&Aβ7π:βSπC/→84(26R
α∃↓↓α↓↓↓↓α↓↓αn⎇↓uA]∃h4)5ji555ji555ji555ji555ji555ji555ji555ji555ji555ji544R↓↓↓↓α↓↓α6$
B∃↓f≠#π;v+1β;.k↔Iras≠Wv≠S'?rβ;W7⊗+Ix4Ph(4*N1βS#/∪∃β'~β¬β7∞9βSπε)β?C.qβ?9π##∃β≡Cπ;;.aβ';&K∂πS.!βeπ##∃↓∧

β≠N+3⊂4V{→βπrα6Rε∧)αVVzaβS#*βπ?6)↓β≠␈∪5β?2α6Rε∧)β'MεOOWn+⊃9↓¬##∃↓ε+≠≠↔∨!β?_hSS#∃αα6Rε∧)↓βSF+9β∪/β↔;∪~↓β?9αβS#∃ε3W;∂&K?9↓εsW7/⊃↓βππβ↔πKNs≥↓βNqβS#(h+π∪'∪↔OMε3'↔3"q↓↓α&C∃β≠.s∂S'}q↓β;.k↔K4ε∞vD∧π&F]≡"εn\≥fNv}4αε∂,Tε>Ol]`hV,]F␈:d∧∧7.l>FN}d
g.n,↑'~εm}Bεf≡>F.",Vf␈t↔⊗*
≥Ff.|≥Bph!Q"αα∧λe,t:I∀|r∧∧∧l,→i∀t8Q!PRα∧∧ααα∧εααα∧∧α¬>≥≡Bε6}$ε∞w∀
wε/,≡FN}dv}Nltε}r∞Mrε≡⎇↑εf/LU`hPQ$ααα∧∧ααβ∀∧ααα∧
&/>≥lBπ&Tπ&∂U`hPQ$ααα∧∧ααβ4∧ααα∧
w⊗OLTε∞r]f"n|eV6NLTεn∂-4ε}r∞Mε*πL≡ε*pQ!PRα∧∧ααα∧εbαα∧∧α∧∞Nl⊗v≡T∞FF*∞L↔ε*
⎇f*π,\6␈⊗EaPPh$∧ααα∧∧αβ:∧∧αααλ,⊗≡←>⊗≡*∞Mε*πL≡ε*ε⎇lRπ⊗\=w⊗"aQ hR∧∧ααα∧ε∪αα∧∧αα∧≤Nf∞v<Tαπ&Tαπ&≡RαπMtπ&FT∧εf}⎇≤6∞b∧Vv"∧
v2πL≡ε*pQ$ααα∧∧ααα∧∧ααα∧	F}>≤<⊗bα∧Vv"∧
v2α∧∞F∂εT∧εO~∧∧π≡N  by  two
               consecutive end-of-file  marks.  The tape  is left
               positioned   after   the  second   mark   by  this
               operation.

       11      Rewind the tape.

       13      Write three inches of blank tape.  The  purpose of
               this is  to cause  a bad  spot on  the tape  to be
               ignored.   Perfectly  blank  tape  looks  like  an
               end-of-record  mark  to  the  controller   and  is
               ignored.  The  monitor automatically  writes blank
               tape over bad spots on the tape.

       16      Advance the tape one file.  The tape is positioned
               after  the  end-of-file mark  that  terminates the
               file.

       17      Backspace  the  tape   one  file.   The   tape  is
               positioned before the end-of-file mark at  the end
               of the previous file.
                   13.7  Paper Tape Punch/Plotter


The paper tape punch and  the plotter are considered the  same device
by  the system;  this device  has the  sixbit name  PTP.  There  is a
switch on the  PDP-6 that determines whether  data output to  the PTP
actually  goes  to the  punch  or  to the  plotter.   This  switch is
normally kept in the plotter position.

There are several different modes  in which the PTP can  be operated.
Normally, only one of these (mode 10) is used with the plotter.  Each
mode and its meaning with the PTP are described below.

    MODES     MEANING

    0,1       Character modes.  Seven bit characters  are punched
              with  the eighth  hole as  an even  parity  bit.  A
              delete (ascii 177) is punched after  every carriage
              return,  vertical tab  and horizontal  tab,  and 30
              frames of blank tape are fed after every formfeed.

    10,110    Image  binary  modes.   The  right-most  eight bits
              (bitpε@dptLjZ[i!J@@`0Xfnn↓ESif$@A←LAKCG @Ao←IHACe∀~∀@@@@@@@@@@Aak]
QKHA⊃SeKGQYr@A¬fAiQ∀AKSO!h@AE%ifA←8AB@A→eC[J↓←L~∀@@@@@@@@@@Aa¬aKdAQCaJ\A)QSLASfAQQJA[=IJAkMKHAo%iPAi!JAaY=iiKd4∀@@@@@@@@@@@↓EKGCUgJAi!JAESQfACe∀AgK]PAKqC
iYrA¬fAiQ∃rACaAKCdA%\~∀@@@@@@@@@@As←UdAEk→MKd\4∀~∀@@@bf@@@@@A¬S9CerA5←IJ\AmKIrAo←IHAS\↓s←kd↓EkMM∃d@ASLAak]
QKH~(@@@@@@@@@@@A=\@lAACaKd↓iCaJAMeC5KfAo%iP@l↓ESif↓S\@A∃CGPA→eC[J8~∀@@@@@@@@@@A)QJ↓gKmK9iP@A!←YJA%fA]KYKd@AAk]GQ∃HAC]⊂@AiQ∀AKSO!iP~∀@@@@@@@@@@AQ=YJAC1oCsf↓Sf\~(~∀@@@bh@@@@@AπQK
WgkZ↓[←IJ8@@A)!SfA[=IJASL@AiQ∀AgC[∀ACf@↓[←IJbf~∀@@@@@@@@@@AKaGKahAiQCP@AEK→←eJA∃CGP@↓EkMM∃d@ASL@Aak9GQKH0AiQJ4∀@@@@@@@@@@@↓GQKG-gkZA=LAiQ¬hAEk→MKdA¬]HASQfAICQBAo←IHAG←U]hACIJ~∀@@@@@@@@@@Aak9GQKH8@A)Q∃gJAi]↑A]k5EKef↓CaaK¬dAS\↓iQJ@↓YKMh↓C]H~(@@@@@@@@@@@AISOQhAQCYYKf@AIKgaK
iSmK1rA←LAiQJAMSeMh@Ao=eH@PX~∀@@@@@@@@@@AMeC5KfRAAk]GQ∃H\@@↓βMiKHAiQJAICi∧Ao←e⊃f@AQ¬mJAE∃K\~∀@@@@@@@@@@AaU]GQK⊂X@f`↓MeC[∃fA←L↓EYC],AiCa∀ACeJ↓MKHA¬]HAi!K\AB4∀@@@@@@@@@@@↓uKe↑↓o←eH↓SfAaU]GQK⊂@QBAiKe↑A]←eHA%f@l@↓MeC[∃fAKC
P~∀@@@@@@@@@@AoSQPA←]1rAiQ∀AKSO!iPAQ=YJAaU]GQK⊂R\~∀4∀@@@b``XD`b@@↓≥↑[G=]mKeMS←\A5←IKf8@A)Q∃gJACIJ@AEUMMKe∃HAGQ¬eCGi∃d~∀@@@@@@@@@@A[←⊃KfAS8AoQS
P@n[	ShAG!CeCGQKefA¬eJ@A∃qieC
iKHA→e←Z~(@@@@@@@@@@@Ae←kdA	kMMKHAC]H↓ak]G!KHAS8AiQJ↓MSegPAgKm∃\AQ←1KfA←_~∀@@@@@@@@@@AKCG AMeC5JA←\↓iQJ@↓aCaKHAiCa∀\@A)!JAKS≥QiP@↓Q←YJ↓Sf~∀@@@@@@@@@@AC1oCsf↓ak]G!KHAC9HA]←QQS]N↓gaKG%CXASLAI←]∀@AM←HAC]r4∀@@@@@@@@@@@↓GQCe¬GiKeL\~∀~(@@@@DbfXbDh@@A9↑[KS≥QiP[!←YJA5←IKf8@A)Q∃gJA[=IKfA¬eJAi!J@Ag¬[JACL~∀@@@@@@@@@@A[←I∀@@bfAKqG∃ah@AQQCh@↓iQJ@↓KSOQQP@AQ=YJ@A%fA]KYKd~∀@@@@@@@@@@AaU]GQK⊂\~∀_@@@@@@@@@@@@@@@@@@@Df\p@↓!CaKHA)Ca∀A%KC⊃Kd~∀4∀~∃)!JAaCAKdAi¬aJAe∃CIKdQ!)$$@AQCLAM←kHAISgQS]Gh↓[←IKLXAoQ%GP@A¬eJAm∃er~∃MS[SY¬dAS\↓←aKe¬iS←\↓i↑Ai!JAMSIghAM=kdA[=IKfA=LAiQ∀AaCa∃dAiCAJAak9GP\~)CGP↓[←IJ↓C]HA%ifA[∃C]S]≤ASfA∃qaYC%]KHA	KY←n8@A'K∀ACYg<@A'K
iS←\bf\n4∃←\AQQJAa¬aKdAQCaJAAk]GP8~∀~∀@@A≠=	&@@@A≠∃β≥∪≥≤~∀~∀@@@`0b@@@@@Aπ!CeCGQKdA[=IKf\A
e←4AKCG AMeC5JA←\↓iQJAACaKd↓iCaJ4∀@@@@@@@@@@@↓B@@n5ESh@↓EsiJASf@↓iCWK8X@Ao%iP@AQQJ@A∃SOQi @AQ←1J~∀@@@@@@@@@@ASO9←eKH8@A)Q∃gJ@n5EShA	siKf↓CeJAACGWK⊂@jAi<@ABA]←eH~(@@@@@@@@@@@A%\As←UdAS]AkhAEUMMKd8@A≥k1Yf@Q¬gGSR`R@A¬]HAI∃YKiKL~∀@@@@@@@@@@@QCg
SR@b\nRA←8AiQJ↓iCaJ↓CeJA%O]←e∃H\~∀4∀@@@b`@@@@@@↓∪[CO∀@A[←⊃J\@@↓CGPAMeC5J@A←8@AiQ∀@AaCAKd@AQCaJA%f~∀@@@@@@@@@@AeKQke]K⊂Ai↑Ae←jAKaCGiYdACfA%hACaAKCef↓←\@AQQJAi¬aJX~(@@@@@@@@@@@A]SiPA∃CGP@`[ESh↓MeC[∀AaYC
KHAS8AiQJ↓Y←n@↓←eIKHAESiL~∀@@@@@@@@@@@QESQf@dphfjZ[QQJ@@@XXfn\AESiLR@A←_AB@AMS]OY∀AEkM→Kd~∀@@@@@@@@@@Ao=eH\~(~∀@@@bf@@@@@A¬S]¬er@A5←IJ\@A∨]1r@Ai!←gJ@↓iCaJAMeC5Kf@A]SiPAQQJ~∀@@@@@@@@@@AK%OQiPAQ←Y∀Aak]
QKH@↓CeJA1←←WK⊂@ACh↓S\@AQQSfA5←IJ\4∀@@@@@@@@@@@↓)QJ@↓gKmK9iP@@↓Q←YJA←L@AKCG @AMe¬[J@@↓Sf@A%O]←e∃H~∀@@@@@@@@@@AG←5aYKi∃YrAC9HAiQ∀AMSeMh@lA!←YKf↓←LAK¬GPAMIC[JA]SiP~(@@@@@@@@@@@AQQJ@A∃SOQi @AQ←1J@AaU]GQK⊂@ACe∀@AeKQke]K⊂@AaC
WKH@X~∀@@@@@@@@@@AMeC5KfAi<ABAEUMMKd↓o←eH8~∀~∀@@@bP@@@@@@Aπ!KGWgUZA[←⊃J\@@↓)QSf↓[←IJ↓Sf@AQQJAg¬[JACL@A[←⊃J@bf4∀@@@@@@@@@@@↓KqGKAh@Ai!Ch@AQQJ@AQCaJ@↓Sf@A¬ggk[∃H@Ai<@AG←9iCS\↓B~∀@@@@@@@@@@AGQ∃GWgk4AC]H↓o←eH↓G←k]PAChAQQJAMI←]hA=LAKC
PAEk→MKd~(@@@@@@@@@@@A=L@AI¬iB\@A)QJAGQK
WgkZ↓Sf@A
QKGW∃H@A←8@AS]AkhAi<~∀@@@@@@@@@@AS]gUeJAC
GkeC
rA←L↓iQJAQeC]g→Kef\4∀_@@@@@@@@@@@@@@@@@@@bf\rA+gKHA	Sg,A!CG,~∀~∀4∃αAkMKdAo%iPAB↓YCeO∀AckC9iSir↓←LAI¬iBAi!ChAQ∀A]KK⊃fAi↑AQCm∀ACmC%YCEY∀~∃←\↓QSOP5gaKK⊂Agi←ICOJA
C\A[¬WJ@AUgJA←_ABA+MKdA	%gVA!¬GV@@!+	 R8@A+	Af~∃G¬\AEJ↓kgKH↓S\AK%iQKd↓←LAi]↑A[Cners: old-style usage treats  the UDP
as  a  special  device  which can  be  operated  only  in  dump mode;
new-style usage treats the UDP almost exactly the same as the DSK.

It is illegal to INIT a  UDP unless it has first been  ASSIGNed.  The
ASSIGN  command  for  UDP,   unlike  for  other  devices,   does  not
necessarily prevent access by other users; it is needed,  however, to
set the manner in which the  UDP will be used.  There are  three ways
of ASSIGNing a UDP:
    PUBLIC      new-style usage; other jobs may use the UDP.
    PRIVATE     new-style usage; other jobs may not use the UDP.
    OLD         old-style usage; other jobs may not use the UDP.
The syntax of the ASSIGN command is:
    ASSIGN [mode] dev [logname]
where the  items in  brackets are optional;  the mode  (if specified)
must be one of the three listed above (the default is PUBLIC), dev is
the device name,  and the optional logname  is a logical  device name
you are giving  the device.  The mode  may be changed  between PUBLIC
and PRIVATE by new ASSIGN  commands except that you must be  the only
user of the UDP to make it PRIVATE.  However, to change  between old-
and new-style usage, you must  first DEASSIGN the UDP and  there must
be no one using it.

Once a UDP has been assigned  by someone as PUBLIC, any job  can INIT
or OPEN it without having to ASSIGN it itself.

A pack to be  used in the new  style must first be  formatted.  (That
is, it must have a SAT and an MFD.)  Once a pack hapεAEKK8AM←e5CiiK⊂X~∃CQiK[aQfAi↑↓oeSi∀A←\@↓ShAS8A←YH↓gisY∀@AoS1XAMC%XAk]1KgfAe←j@A!CmJAQQJ~∃U	 AaISmSY∃OJvA=YHAgQsYJAIKCIS9NA←L↓M←e[¬iiKH↓aCGWLASfA1KOCXQg↑A5kGP~)M←dAIKCH@↓ae←i∃GiS]≤A+	 ↓MSYKLR\@@↓βiiK5aifAQ↑AeK¬H@A←HAoeSQJ@AS8A]Kn4∃gis1JA←\↓C\Ak9M←e[¬iiKH↓+	 A]SYXX↓←LAG=kegJ0AMCS0\~∀~)
←dA⊃KiCS1fA←\↓←aKe¬iS]N↓iQJ@↓+	 A%\AiQ∀A]Kn↓gisY∀XAgK∀@A'K
iS←\bf\b4∃←\AQQJAgAKGSC0AMKCQkeKf↓←L@AQQJA	M⊗AC]⊂A]Kn5gisY∀A+	!LAC]HA'KGQS←\@H~∃←\A∂K]∃eCXA$←≡\@A)QJAeK[¬S]IKHA←L@↓iQSfAgKGQS←\A%f@AI∃m←iK⊂@Ai↑↓B~∃I∃gGeSAiS←\↓←LA←1H[gieYJA+⊃ Akg¬OJ\~(_@@@@@@@@@@@@@@@@@@@A∨YH5'isY∀A+	 ↓+gCO∀~∀~∀4∃αA+⊃ Aβ'M∪∂≥K⊂AS\A5←IJA=→λAG¬\A←]1rAEJ↓eKCH=oeSiQK\AS8AIk[@@A[←⊃J\@A∧~∃ISMVAaC
V@AQ¬f@zbTd``A	Y←GWLX@A]U[EKe∃H@`AQ↑@@zDjbrrlAiQJAYCgPAEY←
V~∀Q9k[EKH@zbjDrrRA%fAkg∃HAi↑AQ←Y⊂ABAa¬ggo←IH\@A∃CGPA	Y←GVAG←]MSgif↓←L~∀tbrAe∃G←eILXA]k5EKeK⊂@`Ai<@zbplAeKG=eH@`↓Sf@h@Ao←e⊃fAY←9NAC]⊂AKCG A←L~)eKG←IIf@b↓i↑@zDpASfd``A]←eIf↓Y←]N8~∀~∃QQJAM%eghAIKG←e⊂A←LAQQJ@A1Cgh@!aCgg]←eHR↓EY←G,A←LA∧A+	 AG←]QCS]f↓iQJ~)mCYk∀A'∪1	∪(@←Aβ'&↑↓S\Ai!JAMSIghAi]↑Ao←IIfAC9HAiQ∀A+	 ≥f@Aa¬ggo←IHAS\4∃iQJ↓iQSe⊂Ao←e⊂\~∀~)+]YS-JA[←Mh@A←QQKdA⊃KmSG∃f@Ai!ChAG¬\@A←AKeCi∀AS\@↓Ik[`↓[←IJ0@AiQ∀A+	 4∃CGG∃aifA9←hAB↓YSgh↓←LAIU[`A[=IJAG=[[C]⊃fAEkPA←]YdABAg%]OYJAIk[@A[←I∀~∃G←5[C]H↓M←dA∃CGPA%]akh↓←dA←Uiakh↓←aKe¬iS←\8@AαAU	 AIU[`@A5←IJA
←[[C9H~∃G=]gSgQfA←L↓io↑@↓o←eILXAiQ∀AMSeMh@A←_AoQS
PASfAiQJ↓gC[J↓Cf@A∧A]←e5CX~∃⊃k[`A5←IJA
←[[C9HAC]⊂AiQJAgKG=]HA←_AoQS
PAG←9iCS]LAiQJA+	 ↓Y←GCQS←\~)oQKe∀AiQJ↓ieC]MMKdA%fAi↑AgiCIh\@AQQkfA∧A+	 ↓Ik[`↓[←IJAG←[5C]HA1←←Wf4∃YSW∀AiQSLt~∀~(@@@@@@@Zqo←eH↓G←k]P|XXy%\[G←IJAY←
CiS←8A←LA⊃CiB|4b~∀@@@@@@yeK
←eHA9k[EKH|XXy	Y←GV↓]k[E∃d|~∀4∃oQKIJ@yE1←GVA9k[EKH|AgQ=kYHA	JAS\↓iQJAIC]OJ↓Me←Z`AiQI←kOPzbjbdpAC]⊂~∃S]⊃SGC`&+Mβ?r↓β←#N≠!βf{∂-β}1↓βSF)βCπ≡YβS#*↓βSK∞sO≠↔∩β'Mβ&y↓βO&KQβ∞s⊂4)g∪↔∂?⊗!↓β;.k↔Ir↓βO#␈+3⊃β⊗)↓β'r↓βS#*↓βKπv;∃β≠⊗{5↓↓α↓βS#⊗{W∨!α↓uEaε;⊂4VK;∪'≡S↔MεQβ←FK∂!β⊗+∂?K"β←'SFK9βSF)βOC.≠'≠'.!β3}≠-βSF)↓βS⊗;O≠/⊃β'LhSS=β∨#πKQr↓αS=ε+≠≠↔∨!β¬α,"A↓β&S¬β'∪π;O6+I1β∞qα&:¬*Qβ?∩α>VR¬*Q↓α-*=β'_h+∨'6+9β←O#!βSF)β↔≠6+∂S'6)βπ∪'∪↔OMπβ?';&K;≥β&yβS#*β∪W7αβ7?∪*β∂?7n;⊃8hP4*↑
∩:&:;Qα←#.qβπ9ε{WSC/!β';&K∂πS/→βS#∂!β?;gIβCπ↔!β?→ε	βK↔≡{K⊃βO→βS=ε∪∀4+?∪'SS.q1βSF)βK↔n';∪/⊃β?→αβS#∃π∪↔∂?⊗!β'Mπ;K'S&+9β←O#!↓βV+K?↔~q↓απg≠=04VMβ←O#!βSF)β∪'≡Y1β'2βπ9α|"⊃β;.k↔Iε{→β←␈∪∪Mβ∂∪∃β←⊗KSS↔rβ?WQb↓βS#*β3?\hS?K∪/⊃↓Qβ⊗KSM↓F∪'SMβ↓11E:Iβ?→αβS#∃εcπOQπ;?K⊃εK∃βf{OQβ∞s⊃↓β∂∪∃β←⊗KSS↔ph+πMπS↔K=ph(4*⊗+≠?K*βπ;eε#πS¬ε≠π9β⊗)β←KO#S↔9ε{;S=ε	αV∩αaβS#*βCK??∪π5β&+O'KNs≥βSzβ∪<4W##∃↓ε{WSC/!β7W∨!↓β∪zβπ9↓∧*:R⊗∩αVV=αβS=β≡C↔∂-αβS#∃¬*∩A↓πβπOO>{K⊃9ααS#∀hRJ⊗:j∃αV,yβ'Mπ+O↔⊃π#=β∂F;∨∃ε	αV∩αβCπO∨;?K⊃r↓α∪π&	β∂πrβ∃β⊗+π⊃β7∪?5βλh*V∩αβ←'SF{WQβ6KKOQε;'['v9βS#*βCπO∨;?K⊃r↓αS#*βO∂K∂#∂!?∨;πCCNs≥βC∞≠-β#∂_4+C∂≠O←?⊗!↓*N<
A)9ααS#'~βCπO∨;?K⊃αβ'Mβ'∪↔πS.!βOC.≠'π3gIβeαβS#∃εk?;'&{H4+Nq↓βS>y↓β←∂KMi↓ε;eβεOO←␈∪⊃↓βO→↓βπ≡≠↔CS.!↓β'rβπ9↓∧*:R⊗∩a↓βπv!↓β'"β'L4VK7C?∨≠'3*βS=β≡Cπ;∨*βS#∃πβπOO>{K⊃↓π;'S!ε	αJ⊗t
6∃β.s3↔O~βg?Uαβ#π[*βS#∀hRV∩AπβK'[Nc↔∨∃r↓α¬βV+K=βεOO←␈∪⊃β7.;Mβ∞seβC∂≠O←?⊗!β'Mε∂∂↔π#↔⊃↓εK9βπph*⊗:$*I84Ph*'→ε	β∪'≡Yβ↔K⊗{Iβ?≡≠WKMε#WK'v9β¬α∀*:ε6*β?Iα,rR⊗I¬*V=1π##↔9αβW;3/≠MβO 4)IB↓#S#*↓A11∪↓A↓β⊗KQ56<
J
&"Iβ'Mε{9β'r↓βS#*α%>=π≠SπS/→β←?⊗!1↓β∞qβ↔K⊗{H4+n+OOπ>)↓!
∀
⊃αJ-"J&⊗4
1	%π;'31ε∪∃βSOβ↔⊃β␈+Qβπv!βS#*↓βCK};Kπ5π≠S?Cε+⊃84TK→βO!↓IaεKM↓β}qβ←#.qβ¬β&KO-β/∪K?Iαβ'Mβ&+S↔∂&+⊃1β&C∃β↔↔∪?I↓π∪↔SW⊗qβ'LhSSπ/.qβπ;"βπ9β/∪K?Iαβ∂?∪*β?→↓↓β'Mπ∪↔SW⊗s↔⊃↓εK9βSF)βK'>CQβ#∞c→↓β}1βS#(h+←?⊗!βπ≠&+IβSF)βCπ∨≠←?K"p4(2⊗:$*I↓↓α↓↓↓↓α↓↓αn⎇↓uA]=h4)5ji555ji555ji555ji555ji555ji555ji555ji555ji555ji544R↓↓↓↓α↓↓α⊗u"⊗I↓f≠#π;v+1β;.k↔Irbε∩HhQ↓↓↓α↓↓↓↓f+KK?∩βK↔S/∪9x4Ph*ε∩∪Q↓↓↓βcCπO∨;?K⊃ph)↓↓α↓↓↓↓βcK↔S/∪;↔⊃ε+KK?∩β∂?∪*β'9β⊗K∨#QεCπ3→ph(4(hRπ9α,rR⊗IεkWOQε∪∃↓β&{;∃β&yβ∂#.≠-βSF)↓βC∂≠O←?⊗!β↔6{K∃β∞seβ∪∂#¬↓β≡9β(h+←KO#S↔9ε{9⬬*∩A9ααS#∃αβ←?K"βπQβf{∂πSN{9αε%⊃β'Mε≠?7C∂∪↔⊃↓ε∨π'w≠QβSF(4+C∂≠O←?⊗!β←KO#S↔9ε{9βSF)αV∩αaβ'→ε;e9αα'→β&C↔K∃εKMβ;zβCπO∨;?K⊃αβ?9β&C∀4*,"A1β␈⊃β'→π##∃α,"AβC∂≠O←?⊗!β'MπS↔K=ε{I↓*≥:εA)bβ?IβN1βS#*β←?K"↓βπQ∧
∩H4VkπS∂F+MβSF)↓αV%↓βCπ∨≠←?K"a↓β?∩β'→↓πK?UβF[∃↓π##∃α,"A↓βπ∪'['f+∨∃1π##↔8hS←K'&)βC↔⊗k'OON{9↓βO→β∨K∞sS↔⊃π#=↓β&C∃βC⊗{∨Kπjβπ;⊃αβS#∃π≠/'AαβK↔S/∪9β'_h+Sπ↑+9β≠⊗{5βSF)α⊗:$*I9↓∧{S#↔↔;'O∃π;K'S*βC↔KnKOO'}qβ'Mπ∪↔+↔∨#↔⊃β∞s⊃βSF(4+∪O∪↔∂Qε+KK?∩↓βK↔'+K9βO→↓βS∞[↔9β>KS!↓ε9β↔↔∪?I↓ε≠?∪∃ε{→↓↓∩↓#CK␈#↔∂SN{84+6K?3π&K?9%π∪↔SW⊗s↔⊃βNqβS#*βK'∨G!β#πf1β?→∧
∩I-
p4(RENAME          [OP=055]
--------------------------------------------------
        RENAME <channel number>,ADR
        <error return>

ADR:    <new password>
        <returned error code in right half>


The RENAME UUO is  used to change the  passwor↓HAM=dABAU	 \@Aβ\A∃≥)$4∃[kgPAQCm∀AEKK8@AI←9JAi↑↓CGck%eJAoISiJ@↓aKe[%ggS←8AM←d↓iQJ@↓+	 AU]YKgL~∃s←TAQCm∀AiQJ↓+	 @↓aeSm%YKOJ8@A)Q∀AaCgMo←eH↓gaKG%MSKH↓S\@A1←GCi%←\Aβ⊃$~∃e∃aYCG∃fAiQ∀A←YH↓+	 AACggo=eH\@AαAu∃e↑Aa¬ggo←IHA[K¬]fAC8@A≥Q$@QMKJ~∃¬E←mJ$AoSY0ACYo¬sfAgUGGKK⊂\@A∪_AiQJ↓GQC]≥JA←L↓aCgg]←eHA%fAgk
GKgg→kXX~)iQJAMWS`AIKike8ASfAQCWK\8@A∪LA]↑A∃≥)$↓QCfA	KK\A⊃←]JA¬]HAs=j@AI<A]←h4∃QCm∀AiQJ↓+	 AAeSmS1KOJX↓iQK\AC\A∃ee←d↓[Kgg¬OJAo%YXAE∀Aisa∃H@A←UhAC]⊂~∃iQ∀Aae←≥eCZAMi←aa∃H\@A%LAiQ∀@A←Y⊂AaCgMo←eH↓oCf@)'/β (AC]H↓s←j@↓I↑A]=h~∃Q¬mJAi!JA+	@AaeSYSYKO∀XAiQ∃\@Ai!JAKeI←dAe∃ike\↓oSYX↓EJAi¬WK\@↓oSiP↓C\~∃∃ee←d↓G←IJ↓←L@dQae←QKGiS=\AmS=YCiS=\RAe∃ike]∃HAS\↓iQJAISOQhAQCY_A←L~)β	$VD\~∀_@@@@@@@@@@@@@@@@A+	@A∩←≡↓'iCiUfA/←IHA'k5[Cer4∀~∀~(@@@A	∪)&@A∨π)¬_@@@@@@@↓≥β≠
@@@@↓≠β≥%≥∞A∨_Aα@b4∀~∀@@@dp@@@@@XXd`@@@@@@@A∂¬%¬∪(@@A'UaaeKMfAKeI←dA[∃ggCO∀@Aka=\AB~(@@@@@@@@@@@@@@@@@@@@@@@@@@@@↓ISgV@AKeI←d@A→e←Z@A≥)∃$@A←H~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@A%9β≠
vAS]gQKCH@AiCW∀@AKeI←d~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@AIKike8AoS`&Aβ∂?&)↓EAph(4*&C∃↓β6{33?>K;≥αJz=↓α-*?M↓εK∃βNc3↔∨∞a↓β←O#!βSF)↓αV%↓i↓αdz>.V¬B¬-8ZDz`Q*U≤-I∃B¬,xZD2ε≥lB∧mH~∧*`C"@↓Dλλλ∧∧λλλ∧∧λ,ef,λλ
M→(∪L↑h⊂1∧∧H⊃⊂$λ{{]L↑]→<N4
⊂1λ5λ⊃⊂(5#"C!!"U~Tλ≠Y.tλ_;L≥≠yk.Mk9~,⎇=_;∧∧_{{Nl<\α2\⊂⊂∀2→{4qrH⊂ b!JP⊂0w→⊂⊂⊂:~2P⊂7→{FE2~stx∧al-to-analog converp	∃d@@Q⊃KmSG∀A	βε$@AC`⊗)βS←z↓β∪'63↔K↔w!β∪↔6K∂↔LhQ#?9π##∃↓¬α∩A52;Mα%|y↓β/→%β←FK∂!βne↓β⊗)β?C/∪πS↔"↓β?;gIβ'9αβ∪W7αβ7?∪(h)#7}#↔M↓β	Y↓β∞s⊃↓E:I9↓↓¬##↔eαβCK?6K∪∃βNsCWQαβπ;⊃αβ?WSπ+Q↓β}1β∪'>KS'k. 4+←∂3↔≠?⊗kM↓β≡{;[↔w#'?;∞c3e↓αβHε/∞,W≡.nM⊗v:∧∞7ε.\=αbα
↑W≡N5Dααε}$αε␈MW⊂h,≤6␈/>M⊗≡∞D∞6N>l≥G~pQ!PTv]≡FF/$∞FF*λ_D~εm}"π&T∧$4∞F∞↑T∩π∨L≥f&∂,Dεn}m≡F␈∩NVoα
]v&*=vnn≥l@hVM≡7"r∧
FF*\f6.>M↔6*≤F'⊗↑>2ε}d∞FF*∧	∀rε}$∧Lu
ZB¬-YtαF6}$∧$5∀αε␈$
v0h.Mε*∧↓u5∧
|H∪jZ∀∃5∧∧∃53d¬→[|Dλ⊂0j$∞z≠⎇-Lλλ≤
⎇;]λ∞Mh_(∞=;Y{Tλ∩3j`b⊂;w\2εE∀≥t4qtλ4z9r[3⊂9t≠zv2⊂≤7tw:λ:7P:~2P;w\d just before the data block and
should contain  the negative  word count  for the  block in  itpε↓YKMh4∃QCY_R\@AQQJA∪=/λAo=eHAI=KfA]=hAQCYJAi↑↓EJAM=YY←o∃HAE`Jβ¬βk/∪=84Ph*?&AβS#*α∩ε
ε;⊃β&C∃αε$→↓β∂∞qβ?C/∪πS∃εK9β¬εkπ;;/⊃βOW≡AβS#∂!↓βSF)β∪π&λ4+S⊗;O≠/⊃αVVz↓"&:¬*Qβ?∩↓α&9ε3?Iα"
mα⎇*RBV"↓β?I∧zVQβ6{Iα∩→%↓β&{↔Mβv{P4+>'Qβ6{IβSF)βSK∞sO≠↔∩βS=↓ε3';'≡Aβ↔6{K∃β⊗+SWKvK;≥β&yβS#*↓βWO/⊃9↓α&C'L4V3↔πS/∪∃β'~β↔;π⊗c↔⊃↓ε∪eβSF)α∞>u!β'"↓↓#O!↓IejkS#∃β↓11Eβ↓β'"I↓β'rβS#∀hR%>=π≠SπS/→↓β←␈∪⊃9↓∧K9βSFKM↓β≡O∃1π##∃β/≠↔I↓εkWOQεCπ[∃αβS#K.)βO↔εKπS(h+∪π&	β3}≠/M9ααS#↔⊗)↓β'~βS#∃ε#πS¬ε∪3?∂Z↓βS#∂!βS#*β∪↔[N≠∃↓βO→β?C/∪πS'v84+?raβS#*β?;∃π##πQαβ'Mβ>'S'v91βπv!βS#*↓β?;*βS#∃π+O↔IεKM↓β␈β↔Kπ&K;≥β}q84*N1βg?*βWO∃εSWOQπ#←=β&S¬β⊗c?∂/~aβg?*β7πeε3';⊃π##πQπK?U↓εK∃β␈β↔Kπ&K;≤4V{9βSF)βOπn)β∪π&	β3}≠-βSF)β∪[.K∂∃βO→β?C/∪πS'v9β?9r↓απMπK?U↓ε;'[∃ε#πS∧hSSKπw≠≠↔I¬*V?MεK9α∞|rQβ7}#∃1β&C∃β≠O∪OQβ}s∃β←Nc1βO&KQβ&C∃βS⊗;O≠/⊃βπ; h+K↔'+K9βNk7↔∪NS↔3Jq↓αSF)↓βO.≠?;⊃ε{;∃β>K31↓π≠S?K*βS#∃∧J>↑⊃αβπ;⊃π∪↔SW⊗p4+'nk↔∪'∂#↔3er↓α'Qαβ'Mβv{QβWw#'1↓π##∃β&C'K⊃ε{;∃↓εKMβ∨O3↔9β&CπQ↓π##∃α-*<4+>K31β>'Q9αα'Q↓π;'31π;π'Qε3?Iβ&C∃↓β&S¬β⊗c?∂-π≠C↔∂N3'↔⊃ε∪e↓β&C∃β≠O∪OP4U*V=β&y↓β.≠?7∃ε3K↔∃αβπ;⊃π##↔9αβOSπ↔!βS#*↓βO↔≡{;⊃β&S¬↓ε∪3?∂ZβSKπw≠≠↔HhS↔≠␈∪∃β'"β←'3bβOS?⊗)βS#*βπ∪∪⊗+OMβ}1βS#*βS#'⊗!β∪π&	β3}≠-βπv!βK↔'+K98hP4*'2↓β↔'&C↔Iβ&C∃↓α"
β?∩↓βS#*α∩ε
αβ3?O/→β¬↓π≠π7Cf)1βSF)↓α2⎇~Q↓β⊗KQ↓#⊗KP4)∪)57SF)↓A1c⊃AAAε∪'Q%π;'31ε∪∃↓β≡+Qβ'rβS#∃∧I>=β∨#πSW~β←?K"↓βS=εK;∪'≡S∀4W##πQε	β∪'≡≠?;SNsW'SJ↓β#π~β?∂∂/∪↔⊃βNq↓βSF)βO'>sπ19αα#?←/3↔I1αβ;=β/∪K?HhS'S~β'9β&C∃α%|yβOS∂#WMβ>{K⊃↓π;'31ε∪∃βO/!↓#←FK∂!β>{W3⊃ε≠πWO*↓βπ9ε+KK?⊂h+K↔'+K9β7∪?5αLqβ?I∧zVQα-*?M%bβO=βN{UβOF{W3⊃π#↔OQπ##'Mε∪'Q↓πK?WK≡+3→β&x4+*βOWK*β?→β&C∃β∪∂#¬∨Mπ3π3'&KSe8hP4*SF)αε∩~β∂π9αβ∃β&S¬7'∪'∨∨/∪↔⊃9ααO↔S&K;≥↓π##∃α≥J∞2∃ε∪'Q↓αC'Qβ⊃a57&C∀4)αa1IAαβ'QJβ'9β&C∃α%|y↓βO&SWMπ;?K⊃ε[↔↔C~βS#∃∧
∩
β7∪?5↓εk?['v9β↔N{;⊂4W##∃β6KKOQαβ∪πS
β3?≡Ymβ'w≠S↔π"a↓βSF)αε∩~βSKπw≠≠↔K~↓β∂?w#';W␈+O3eεK;S<hSS#∃ε3'KO"↓β∪π&	β3}≠-9↓¬;#↔9αβ'Qβ>+SM↓π#=βSF)β↔;"↓β?→π##∃↓ε3'KO"β∪πSλh+3}≠-1βO!↓β∨}+Mβ∞≠-↓β&yβS#*↓β↔>K;;'v9βπW&{7πSN≠π33Jq↓↓α&C'Mβπ∪?∂↔∨_4+∂}sS';.+MβWw#'1β
βOπ7εc∃β∂}k↔MβNqβS#∂!β'MεcπK∨/⊃βS#∞q↓βO}k∃βSG∪↔O#}c⊂4)G+O↔Iπ≠↔SS∞∪3∃%r↓α←#.qβOW≡Aβ¬↓π≠π7Cf)β?∂∨+KM1π##∃α"
β∨}+Mβ?r↓βS=π##∀4W≠↔∂?v!β∪π&	β3}≠-βπv!βK↔'+K;MαβS=β&C∃βW≡+IβSF)βC?≡KS'?rβ'9↓π##∃β6KKOPhS∪πS
β3?≡Yβ←#/∪∃βSF)βSKN;∨↔KNs≥βO∞kC3∃ε{∂∂W↔∪↔⊃9αα≠?Iαβ↔≠≠N≠'↔;∨IβS#(h+∂?oβπK∃εKMβ;␈!↓β7∞#∃β←O#!β↔∞≠!βO∞kC3∃b↓βW"β+WO"β←'SB↓βS#*β#'∨Bk?K∪/⊂4+O∞kC3∃αβ?→↓ε+π∂!αβ←?K"q↓↓αN{U↓βo+OQ↓ε∪∃↓βNq↓α∞|rQ↓βn{∪∃↓π#=β∨.Kπ;&+∀4+≡{;S'w+'Seε∪↔S←.+9βSF)β≠'↔≠Qβπv!βO↔≡{;⊃β&S¬β⊗c?∂/~p4(4U;#↔9π##∃α"
β'rα∞f∞d)β7?&)β∨?/→βS=π##∃β≡+∂?;"β∪πS
β3?≡Y1↓β&C∃α∞L~∩>8hS'QαC'Qβ→E57&C∃↓AbaIAβ⊗KQ%βO→↓βO/!β'9π##∃αJz=βO&SWMπ;?K⊃r↓↓αg␈)β∂πph+∂π/≠∃βSF)αε∩~βS=β∨#πKQαβ∂g∂fK;≥β∞;π'9ε∪eβ∂f+πK'v9βS#O→β'"q↓↓α&C'MβO_4+?vceβW≡+≠W1εK→βg␈)β/;␈9β←#N≠!↓β&S¬β⊗c?∂-εKQβ'~β'99αα'Qβ>K31↓ε;=β'w#<4*≥J∞2∃εk?∪∃ε{9βSF)β;↔G!β∪π&	β3}≠-84Ph*S#*αε∩
αβπ;⊃π##∃α$

↓β≡9β*β7π∪*↓βS=π≠SπK"βO'7.cSπ;.{WO3Jq↓↓α&C'MβO_4+∪}s∃βJβSWKvK;≥β}qβS#*α&>NLr
βO!↓#O!↓MAjkS#∃β↓11Qαβ'QJβ'9↓π##∃αJz<4+∨#πSW~β←?K'→↓β?2β?SB↓β∪↔6K∂↔MαCS#↔J↓βπK*β∪'≠6+K↔;"↓β∪↔6K∂↔MbβK↔G.KK∀4V#'≠≠/∪↔;Q∧J:&S~I9↓α>CπQβFCC↔w→↓β'~βS#π"βS#∃ε3'KO"β∪πS
↓βSK∞sO≠↔∩αVV<hQ#?→ε+'S#/⊃β∪↔6K∂∃%αβ∪?↔~β;?Qε∂SW∞c3e↓π≠SπK"βS#∃π#Kπ;≡3↔I9α↓α←#.qβS#(h+≠'↔≠Qβ∪∂#¬↓β'∪π;O6+IαV,y↓β≠␈⊃βS#*↓β?SF+Iβ∪/3'∂∃αβ'Mβ>K[↔9b↓βS#.qβ?&@4+∪/3'∂↔~β←'3bβ↔∨Nq9↓αv{S∃β&CπQ↓ε+'S#/⊃αVVz↓"ε∩~β?Iα$

%β≡9↓β⊗)β∨'6+84+6KKOQr↓αS#*βO↔∂}s⊃αV,yβ←'faβOS∂∪QβSF)βSK∞sO≠↔∩q↓αg␈)β7W∨!β∃ode for the device whose UUO is given first, or you will  not return
from the UUO.  The system  will only wait one minute between  the two
UUOs.

If you  are in  CYCLE mode  on the ADC,  and in  IOSYNC mode  on both
devices, you can specify that the DAC is to be started after  the ADC
is advanced to the second data block and not just at the beginning of
input.  This is  done by setting the  IOAFT bit (bit  24--the 0,,4000
bit) in  the ADC  I/O status word.   This will  prevent the  DAC from
being started until the ADC advances to the second data block.
                   ADC/DAC I/O Status Word Summary


The device-specific  bits of  the ADC  and DAC  I/O status  words are
shown below.  Bits marked with an asterisk (*) are only meaningful to
the ADC.

    BITS   OCTAL         NAME      MEANING OF A 1

    24     0,,4000       * IOAFT   If  IOSYNC  is  on   for  both
                                   devices and CYCLE and this bit
                                   are on  for the ADC,  then the
                                   DAC will be started only after
                                   the  ADC has  moved on  to the
                                   second data block.

    25     0,,2000       LOST      Data sample missed.

    28     0,,200        * CYCLE   The    ADC    will    transfer
                                   repeatedly into the first data
                                   block until some  input sample
                                   exceeds a preset threshold.

    29     0,,100        CONT      Data transfer UUOs will return
                                   immediately   without  waiting
                                   for the transfer to finish.

    30     0,,40         IOSYNC    The  ADC and  the DAC  will be
                                   started simultaneously if this
                                   bit  is on  in the  I/O status
                                   word of each device.

    31     0,,20         * CYCDON    The ADC  has moved  from the
                                   first input data block  to the
                                   second.   This  bit   is  only
                                   relevant in CYCLE mode.
                  MTAPE UUO for the ADC and the DAC


The MTAPE UUO is used with the ADC and the DAC to set parameters like
sampling rate, channel multiplexing, ADC threshold, etc.
MTAPE           [OP=072]
--------------------------------------------------
        MTAPE ADR

ADR:    <ADC CYCLE threshold>,,<Speed*1000 + Packing*100 + Nchans>
        <address for RUN flag>
        <ADC input select>,,<address for returned ADC CYCLE pointer>


An MTAPE to either  the ADC or the  DAC has as its  effective address
the address of a 3-word (2-word for DAC) block which is  formatted as
indicated above.   The meaning  of the  various fields  are explained
below.

In CYCLE mode for the ADC, the input is directed into the  first data
block until  the high-order  sample in a  word exceeds  the threshold
which is specified in  the left half of  the first word of  the MTAPE
block.

The right  half of the  second word of  the MTAPE block  contains the
address of  the RUN flag;  a zero address  wil inhibit  this feature.
When the ADC or the DAC is started, this cell is set to -1.  When the
ADC or DAC is  stopped, this cell is set  to 0.  In this  manner, one
can tell when his transfer is actually occurring.  Since the  ADC and
the DAC are given separate MTAPEs, they can have separate  RUN flags,
as well  as separate  clock rates, numbers  of channels,  and packing
modes.

The third word of the MTAPE  block is only relevant to the  ADC.  The
right half specifies the address  where the data block pointer  is to
be stored in CYCLE mode.  What  you get is the IOWD at the  point the
threshold was exceeded, relocated  to a relative address  within your
core image.   The address  part of  this word  (the right  half) will
point to the word containing the sample that exceeded the threshold.

The left  half of  the third word  of the  MTAPE block  specifies the
inputs  to  be used  for  the ADC.   Not  only are  there  four input
channels that are serviced sequentially, but all four channels can be
switched to an alternate  four inputs.  This is specified  by setting
the sign  bit of the  third word of  the MTAPE block  to 1.   At some
point  in  the  future,   this  left  half  may  contain   an  honest
multiplexing address, such that input  can be obtained from any  of a
number of sources, but for now, you just have the four  main channels
and the four alternate channels.

"Speed" in the first word  of the MTAPE block selects the  clock rate
used for sampling as follows:

    SPEED  CLOCK RATE PER CHANNEL

      0    6.4 KHz
      1    12.8KHz
      2    25.6KHz
      3    51.2KHz (highest ADC rate)
      4    102.4KHz
      5    204.8KHz

"Packing" in the first word of the MTAPE block selects the  manner in
which samples are packed into words as follows:

    CODE   PACKING METHOD

      0    12-bit two's complement bytes packed 3 to a word.
      1    18-bit two's complement bytes packed 2 to a word.
      2    9-bit incremental floating-point  bytes packed 4  to a
           word (DAC only).

Note that the 18-bit byte  has only =16 significant bits for  the DAC
and  only =14  significant bits  for the  ADC.  In  the DAC,  the two
low-order  bits of  each  byte are  ignored.   In the  ADC,  the four
low-order bits of each byte are set to zero.

These packing modes are diagrammed below:

    12-bit mode (code 0):
    _________________________________________________________
    |0               11|12              23|24             35|
    |     SAMPLE 1     |     SAMPLE 2     |     SAMPLE 3    |
    |__________________|__________________|_________________|
    
    
    18-bit mode (code 1):
    _________________________________________________________
    |0                        17|18                       35|
    |         SAMPLE 1          |          SAMPLE 2         |
    |___________________________|___________________________|
    
    
    9-bit mode (code 2, DAC only):
    _________________________________________________________
    |0   3|4     8|9  12|13   17|18 21|22   26|27 30|31   35|
    | EX1 | MANT1 | EX2 | MANT2 | EX3 | MANT3 | EX4 | MANT4 |
    |_____|_______|_____|_______|_____|_______|_____|_______|

This last mode is called Incremental Floating Point (abbreviated IFP)
mode.  Each 9-bit byte is  decoded into a 4-bit exponent and  a 5-bit
mantissa.   The  mantissa  is  shifted  left  the  number  of  places
represented  by the  number in  the exponent  and is  added  into the
current position of  the DAC to produce  the new position.   The sign
bit is inferred from the mantissa, it is not explicit.  The  sign bit
is taken to be the complement of the high-order mantissa bit,  and is
spread throughout the number before the shifting occurs.

To restate: For each channel,  the DAC has a 16-bit  register, called
the FLTMEM register.  These registers are cleared at the beginning of
a transfer.   In IFP mode,  a 9-bit byte  is unpacked from  the input
word.  The 4 high-order  bits of that byte  go into a counter,  the 5
low-order bits go into the 5 low-order bits of a 21-bit  (16+5) shift
register.  The complement  of the high-order  bit of the  mantissa is
stored  in the  =16 high-order  bits of  that 21-bit  shift register.
This entire register is shifted left the number of places (0  to =15)
represented by  the number currently  in the counter  (the exponent).
The =16  high-order bits  of this  register are  then added  into the
FLTMEM register for this channel and the sum is stored back  into the
FLTMEM register.  This sum is also delivered to the DAC.

Notice that this means that a 9-bit byte with all bits zero  does not
represent a change of zero in the FLTMEM register.  A zero  byte will
infer a sign bit of 1,  which will be spread throughout the  word and
will result in  a word of  -1.  The "official"  code for zero  is 20.
This has  the high-order bit  of the mantissa  on and all  other bits
zero.

"Nchans" in the first word  of the MTAPE block selects the  number of
channels used in data transfers as follows:

    NCHANS MEANING

      0    Unused.  Currently same as 3 below (quadraphonic).
      1    Monaural (1 channel only).
      2    Stereo (2 channels).
      3    Quadraphonic (4 channels).

For multiple channels, successive samples go to  successive channels.
For  example, in  Stereo mode  (Nchans=2), the  first sample  goes to
channel 1, the second sample goes to channel 2, the third sample goes
to channel 1 again, the fourth to channel 2, and so on.
                   13.11  The Old AD/DA Converter


The  old  Analog-to-Digital/Digital-to-Analog  Converter  (device AD)
operates only in dump mode.  The  only legal modes for the AD  are 16
and 17.  Mode 17 is the normal mode.  In mode 16 each time a transfer
is requested, it will not be started until bit 28 (0,,200 bit) of the
spacewar buttons is on (see the SPWBUT UUO on page 261).

Note  that  output from  the  AD operates  only  the  4-channel sound
system.  Input can come from various sources; see the  explanation of
the input channel number below.  Data from or to the AD is  in 12-bit
bytes packed three to a word.

Normally, an INPUT  or OUTPUT will not  return until the  transfer is
finished; however,  if bit  29 (0,,100 bit)  is on  in the  AD status
word,  the  UUO  will  return immediately  so  that  you  may overlap
computation with the transfer, for instance if you are trying to keep
transfers  going  continuously.  To  wait  for the  last  transfer to
finish, use the WAIT UUO (see page 42).

The AD does not take standard dump mode command lists.  Each INPUT or
OUTPUT UUO should  point to a 5-word  block which should  contain the
following information:

    -<word count>,,<address of data block>-1
    <136 CONO bits>
    <AD CONO bits>
    <CONI bits from 136 returned here after transfer>
    <CONI bits from AD returned here after transfer>

The  136 is  an  interface for  the AD.   The  CONO bits  to  the 136
interface should be  4250 for input and  3650 for output  (unless you
know about the 136 in detail).

Here is an explanation of the AD CONO bits.

    BITS   OCTAL         MEANINGS OF AD CONO BITS

    18:23  0,,770000     This is  the AD multiplex  input channel
                         number.  If auto-indexing is  used, this
                         is  the beginning  channel  number.  You
                         can find a  list of the  channel numbers
                         and what  devices they correspond  to by
                         looking  at  SAILON  21,  Addendum  1.1,
                         entitled A/D CONVERTER MULTIPLEXER PATCH
                         PANEL AND CHANNEL ASSIGNMENTS, by Edward
                         Panofsky.   The  channel  number  is not
                         pertinent for output.

    24     0,,4000       Reset  bit.  This  bit should  be  1 for
                         output, 0 for input.

    25     0,,2000       Input: auto-indexing.  If this bit  is a
                         one,  then   when  a  sample   has  been
                         transmitted,   the   multiplex   channel
                         number  (see bits  18:23 above)  will be
                         incremented  by  one  before   the  next
                         sample is transmitted.

    26     0,,1000       Input:   complement  low-order   bit  of
                         channel number after each  sample.  With
                         this  bit  on,  if  you  start  out with
                         either  channel 16  or 17,  for example,
                         then  samples  will   alternate  between
                         these two channels.  With input, if both
                         this bit and  bit 25 are set,  a logical
                         conflict exists and nothing will happen.

    25:26  0,,3000       Output: number of channels of sound.  In
                         this field, a 0 means 1 channel, 1 means
                         2 channels, 2 means nothing, and 3 means
                         4    channels.     Samples    are   sent
                         alternately  to the  number  of channels
                         indicated.

    30:32  0,,70         Clock  speed.    The  meanings   of  the
                         different values possible for this field
                         are:   0--free run,  1--20KHz, 2--25KHz,
                         3--10KHz, 4--50KHz, and 5--100KHz.  FREE
                         RUN means that as soon as one conversion
                         is done another one is begun; the actual
                         speed  under   this  condition   can  be
                         somewhat   irregular  and   is  probably
                         somewhere  between  100KHz  and  200KHz.
                         The  100KHz   speed  (5)  is   not  very
                         reliable.

The system does  no error checking  for you so  you must do  your own
with the bits returned in words 3 and 4 of the block.  Of these bits,
the only one that is really important is the 136 data-missed bit, bit
23 (0,,10000 bit) in  word 3.  If this bit  is on, then a  sample was
lost in the transfer and you should do the transfer again.

If you are running in  continuous mode, (bit 29 set in  status word),
then the  CONI words  for the  136 and  the AD  will not  be returned
unless the device  catches up with you.   This is one way  of testing
for errors in  continuous mode transfers; if  you get the  CONI words
back, then either  there was some data  error (causing the  device to
finish early) or you did not supply/accept data as fast as the device
could go.
                     AD I/O Status Word Summary


    BITS   OCTAL         MEANING OF A 1

    29     0,,100        Continuous mode.  An INPUT or OUTPUT UUO
                         will  return  without  waiting  for  its
                         transfer to complete.  However,  it will
                         wait for any previous transfer  still in
                         progress  (whether input  or  output) to
                         finish before the UUO returns.  Thus you
                         cannot  be doing  both input  and output
                         simultaneously.
                          13.12  TV Cameras


For reading the  TV cameras, it is  recommended that you  use already
existing routines rather than write your own.  However, for those who
are  stubborn  enough  to  want  to  do  it  themselves,  here  is an
explanation of how to read the cameras.

To read a television camera (device TV), you first INIT or OPEN it in
mode 17 and then do dump mode inputs.  The TV does not  take standard
dump mode command lists.  The  effective address of an INPUT  UUO for
the TV  should point to  a 4-word block  that contains  the following
information:

    -<word count>,,<address of first word>
    <TV camera CONO bits>
    <TV camera DATAO word>
    <CONI bits from 167 returned here upon completion>

Thus the first word of this block contains the negative of the number
of words of data to be input and the address of the first word of the
block where this data is to go.  (Note that this is not standard IOWD
format!)  The second word contains (in the right half) the  CONO bits
for the TV.  These bits have the following meanings:

    BITS   OCTAL         NAME      MEANINGS  OF  TV  CAMERA  CONO
                                   BITS

    18:20  0,,700000     BCLIP     The   bottom   converter  clip
                                   level.  Each sample is a 4-bit
                                   number     representing    the
                                   intensity  at  a  given point.
                                   The =16 levels are  taken from
                                   the voltage range specified by
                                   BCLIP  and TCLIP  (see below);
                                   thus   you  can   control  the
                                   camera's exposure setting from
                                   your  program.   A  voltage of
                                   1.0  is  put  out  at  a  very
                                   bright spot and a voltage of 0
                                   is  put  out  at  a completely
                                   dark  spot.   BCLIP  indicates
                                   the   voltage   which   is  to
                                   represent  a  sample  of zero.
                                   Only voltages above this value
                                   will produce non-zero samples.
                                   See  the table  below  for the
                                   voltage  levels  indicated  by
                                   the  various  possible  values
                                   for BCLIP.

    21:23  0,,700000     TCLIP     The  top  clip   level.   This
                                   value  determines  the voltage
                                   which  is  to   represent  the
                                   maximum  sample  value  of 17.
                                   All higher voltages  will also
                                   produce a  sample of  17.  See
                                   BCLIP  above  and   the  table
                                   below  showing  voltage levels
                                   corresponding to  the possible
                                   values of TCLIP and BCLIP.

                                     VALUE  BCLIP   TCLIP

                                       0    .875    1.000
                                       1    .750     .875
                                       2    .625     .750
                                       3    .500     .625
                                       4    .375     .500
                                       5    .250     .375
                                       6    .125     .250
                                       7    .000     .125

    24:26  0,,7000       CAMERA    The camera number.   There are
                                   eight possible camera numbers,
                                   but not all of them  are wired
                                   in   permanently.    The  cart
                                   camera is  number 0,  the Cohu
                                   camera is number 1, the Sierra
                                   camera  is  number  2  and the
                                   Kintel camera is number 3.

    27:29  0,,700        VRESOL    The     vertical    resolution
                                   divided by two, minus  one.  A
                                   zero here gets you every other
                                   line, a one every fourth line,
                                   etc.

    30:34  0,,76                   This field must contain a 1.

    35     0,,1                    Horizontal  1/2-sample offset.
                                   If  this  bit  is  a  one, the
                                   samples within each  line will
                                   be   taken    from   positions
                                   approximately 1/2 sample width
                                   to  the  right  of  the  usual
                                   positions.    By   doing   two
                                   transfers,  one with  this bit
                                   off  and one  with it  on, you
                                   can  essentially   double  the
                                   horizontal resolution.

Now here are the meanings for the bits in the DATAO word  (third word
of block pointed to by the INPUT UUO).

    BITS   OCTAL         NAME      MEANING  OF  TV  CAMERA  DATAO
                                   WORD

    0:8    777,,0        YDISP     The Y-coordinate displacement.
                                   Here  0  is  the  top  of  the
                                   screen;  the  bottom  is about
                                   400.  This is the Y-coordinate
                                   of the top line that  you will
                                   receive.    Since    you   can
                                   receive  at  most  every other
                                   line  (see  VRESOL  above), to
                                   get an entire picture  you can
                                   read the picture  twice, first
                                   with  YDISP set  to 0  for the
                                   even  numbered lines  and then
                                   with  YDISP set  to 1  for the
                                   odd numbered lines.

    9:17   777,,0        XDISP     The X-coordinate displacement.
                                   Here 0 is the left side of the
                                   picture;  the  right  side  is
                                   approximately 515.

    18:26  0,,777000     WWIDTH    The  width of  the  picture in
                                   words.   Each   word  returned
                                   will contain 9  4-bit samples.
                                   WWIDTH specifies the number of
                                   words returned for  each line.
                                   Thus  you  will  get  9*WWIDTH
                                   samples  per line.   The range
                                   for  this field  is from  0 to
                                   44.

The data you get from an  INPUT is packed 9 4-bit samples to  a word.
The first sample  is from the upper  left hand corner of  the picture
specified by  the X  and Y displacements,  horizontal width  and word
count.   Successive samples  are  from points  just to  the  right of
previous points until the end of a line, after which the  next sample
is from the leftmost point on the next line (the exact line depending
on the vertical resolution).

When the transfer  is finished, the CONI  bits from the IOP  (the 167
data channel) are returned in the fourth word of the block pointed to
by the INPUT UUO.  Also, if an error occurred during the transfer and
bit 29  (0,,100 bit) was  on in  the TV's I/O  status word,  then the
address within your core  image where the transfer was  terminated is
returned to you  in the left  half of the  CONI word (fourth  word of
block).  The important bits in this fourth word are explained below:

    BITS   OCTAL         MEANINGS OF 1'S IN 167 CONI WORD

    30     0,,40         DATA  MISSED.   A word  (9  samples) was
                         missed  by the  memory and  the transfer
                         was terminated.  You cannot be sure that
                         you  have a  complete picture;  thus you
                         should do the transfer again.

    31     0,,20         NON-EX  MEM.   The  camera  referenced a
                         non-existent   memory   location.   This
                         should never happen!

    32     0,,10         JOB  DONE.   If  the  transfer  has been
                         completed  successfully,  then  this bit
                         will be on.  If this bit is not on, then
                         the camera  is hung and  not responding;
                         for instance,  the camera's  power might
                         be off or your specifications might have
                         been illegal somehow.
                     TV I/O Status Word Summary


    BITS   OCTAL         MEANING OF A 1

    29     0,,100        Return data address at time of  error in
                         left half of CONI word.
                           13.13  The IMP


The Interface Message Processor (device IMP) is the interface between
the system and the ARPA network.  To do anything over the network, it
is necessary to use the  IMP.  Before explaining usage of the  IMP, I
will define  some network terms.   However, these definitions  do not
describe all of the network protocol.  Anyone writing a  program that
utilizes the network should first read the network documents in order
to gain some understanding of the protocol involved.

SOCKET: Any connection between two hosts involves two sockets, a send
socket on one end and a receive socket on the other end.  In a normal
interaction, there will be two connections so that data can flow both
ways;  thus four  socket numbers  are involved:  a local  send socket
number, a local receive socket number, a foreign send  socket number,
and a  foreign receive  socket numbers.   These numbers  are internal
connection  indices  and  are  used  to  keep  different interactions
separate.  Of these four  socket numbers, each receive  socket number
must be even and each send socket number must be the odd number which
is one  greater than the  receive socket number  at the same  end.  A
socket number is 32 bits long.

RFC--Request  For  Connection:    To  establish  a   connection,  the
originating host sends  an RFC to the  destination host with  a local
socket  number  and  a  foreign  socket  number  as  arguments.   The
destination host can complete the connection by returning an RFC with
the same socket numbers, or can refuse the connection by  returning a
close code.  Normally two connections are made for full duplex.

LINK:  Once a  connection  is established,  an 8-bit  link  number is
assigned such that the 8-bit host number concatenated with  the 8-bit
link number  is unique at  both ends of  the connection.   During the
lifetime of the connection, the  link number is used to  identity the
connection to the IMP network.  The IMP itself is programmed  in such
a way that only one message may be in transit on a particular link at
a  time.  The  IMP  signals the  sending  host that  the  message has
arrived by returning a RFNM (request for new message) with  that link
number as an argument.  All of this is invisible to the user.

ALLOCATION: The host to host protocol defines a kind of  flow control
on a  higher level  than the  RFNM control.   This is  the allocation
system.  When a connection  is first established, the  receiving host
sends a control  message telling the sending  host how many  bits and
messages can  conveniently be buffered.   The sending host  must then
not send  more than that  many bits or  messages without  waiting for
more allocation from  the receiving host.   Alt↓Q←UOPA[UGPA←_@AiQ%fASf4∃k]g∃K\Ai<AiQJ↓kgKd0AiQJ↓kgKd↓QCfA
←]ie=XA←m∃dAQ←\A[kG ACYY=GCiS=\AiQ∀~∃gsMiKZ@↓oSYXAOSm∀@AiQ∀@AeK5←iJA!←gh\@A
←H@AICQB@AC9H@AM%YJAiIC]gM∃d~∃aUea←g∃fXASPASfA
←]mK9SK]h↓i↑AS9GeKCMJAiQ∀ACYY=GCiS=\A←m∃dAiQ∀AgsgQKZ~∃⊃KMCk1hAC[=k]h\4∀~∃¬e)
@AM∪5
tAβgg=GSCi∃HAoSQP@AK¬GP@A
←]]K
iS←\↓Sf@A∧@AEsQJ@Ag%uJAi!Ch~∃MaKGS→SKfAQQJAieaJA←_AICi∧Ai↑A5←mJA=\AiQ¬hAG←9]KGi%←\\@↓)QJAMK]HAMSIJ~)S]IS
CiKf↓S\ASQfA%
AoQCPAiQJAEsi∀AgSu∀A←LAQQJAG=]]KGQS←\A%f@Ai<AEJv4∃iQJAeKG∃SmJAMSIJ@↓←LAi!J@AG=]]KGQS←\A!Cf@A9↑AGQ=SGJ@↓S\@AQQJA[¬iiKd8~∃'i¬]M←e⊂ACYY=ofAEeiJAg%uKf@↓←L@b0@dX@LX@hX@lX@`X@rXbdX@DlX@@DpX@fHX~∃C9H@fl↓ESif8@A≠←Mh@A←QQKdA!←gif↓CYY←\A←]Yd@@pXfdXA¬]H@fX@AESQf\@AQQJ~∃MiC]I¬eHA)∃→≥(AG←]9KGiS=\ASfp@AE%ifAo%iPAi!J@Ae%OQi[=gh@nAESiLA←L~)KCGP↓EsiJAEKS9NAC\ACgG%RAGQ¬eCGi∃dAk]1Kgf@↓iQJA!SOP[=eIKdAEShPd``4∃ESh$ASfA=\XAS8AoQS
PAGCMJAiQ∀AGQCICGiKHASfA∧AG←[5C]HAQ↑AiQ∀AeKG∃SmS]≤~∃)1≥(\AαAEeiJAg%uJASLAKgi¬EYSg!KHAM=dAiQ∀AYSM∀A←LA∧@AG←9]KGi%←\AC9H~∃[¬rA]←PAEJA
QC]O∃HAk]QSX@AQQJAG=]]KGQS←\A%fAEe=WK\\A/QK8As←jAI↑A%≠ ~∃%]akhQ←kiAkhRXAiQJ↓ICiB↓eKGK%mKH@QgK]PRASf↓aCGW∃H@@QU]aCG-KHRA%]i↑~(QMe←4RAs←UdAEk→MKefAKMM∃GiSm∃YrAo%iPA∪⊃!∧@Q%→	∧RAS]gQekGi%←]fAUgS]N4∃iQJAG←]9KGiSn byte  size.  Thus  in buffered  mode, after  you have
INITed the IMP, you  should change your buffer header's  byte pointer
byte size  to the  connection byte  size.  In  dump mode,  you should
unpack (pack) the data  with ILDBs (IDPBs) using the  connection byte
size.

FURTHER NOTE ON 8-BIT BYTE SIZE: When you do buffered IMP I/O with an
8-bit byte size (the standard TELNET connection byte size),  the four
low-order bits (bits 32:35--0,,17 bits) of the last data word of each
buffer are  used to indicate  which of the  four 8-bit bytes  in that
word contain real  data and which  are merely padding.   This permits
the  use  of the  null  byte as  significant  data  identifyable from
padding nulls.  Bytes that are just padding are marked by  having the
corresponding low-order bit on.  Programs that don't care about nulls
can ignore the low-order marking bits.  On output, the bytes you have
marked as padding are not transmitted to the IMP; on input, the bytes
of nulls used  to pad the  input to a  full word boundary  are marked
with the corresponding low-order bits on.  The following  table gives
the correspondences between bytes in  the last data word of  a buffer
and the low-order bits of that word that are used to mark padding.

    BITS   OCTAL         BYTE MARKED AS PADDING

    32     0,,10         First byte: 776000,,0
    33     0,,4          Second byte:1774,,0
    34     0,,2          Third byte: 3,,770000
    35     0,,1          Fourth byte:0,,7760
                               IMP I/O


The IMP is similar to any other sharable I/O device in that it may be
initialized  with an  INIT  and released  with  a RELEAS,  but  it is
different in  that one must  first open a  connection before  one may
exchange data.  Connections are opened and closed separately  for the
receive side and the send side, even though the I/O channel number is
the  same.   One may  open  and close  connections  liberally without
having to do more than one INIT.  The INPUT and OUTPUT UUOs  are used
to read data from, and to send data over, the connection.   The CLOSE
UUO  may  be used  to  close one  or  both of  the  send  and receive
connections  (the  close-inhibit  bits  determine  which   sides  are
closed).   To open  a connection  or to  get one  of  several special
functions,  the user  does an  MTAPE UUO  with the  effective address
pointing  to a  variable  length table  whose  first word  is  a code
number.   This  number determines  the  function of  the  UUO.  These
functions will be explained below, but first here are explanations of
some bits relevant to the IMP.


The  status of  a  connection is  contained in  several  places.  The
actual  connection  status  is  in  a  status  word,  one   for  each
connection.  If you have both  a receive and a send  connection, then
you  will have  two status  words.  MTAPE  2 gives  you  these status
words.  The bits are decoded as follows:

    BITS   OCTAL         NAME      MEANING OF A 1

    1      200000,,0     RFCS      RFC sent.
    2      100000,,0     RFCR      RFC received.
    3      40000,,0      CLSS      Close sent.
    4      20000,,0      CLSR      Close received.
    11     100,,0        INTINR    Interrupt by receiver.
    12     40,,0         INTINS    Interrupt by sender.

The normal state  of an open connection  is 300000 in the  left half,
possibly with other bits on  that are not mentioned above  (some bits
are used internally by the  system).  When a connection is  closed or
closing, CLSS or CLSR will be on.  No more data may be transmitted or
received over  the connection  at this point.   The foreign  host may
send us  interrupts.  He can  send an interrupt  from receiver  or an
interrupt from sender.  These  can be received as user  interrupts or
can be  tested for explicitly  by MTAPE 14.   Interrupts can  be sent
using MTAPE 11; interrupts generated  by this UUO will not  appear in
the connection status words for the user generating them.


More status bits  occur in the I/O  status word, which can  be gotten
with a GETSTS UUO, or examined with a STATZ or STATO UUO,  or cleared
with a SETSTS UUO.  These bits are as follows:

    BITS   OCTAL         NAME      MEANINGS  OF  1'S  IN  IMP I/O
                                   STATUS WORD

    25     0,,2000       HDEAD     Host or destination  IMP dead.
                                   This   means  that   the  last
                                   message sent stayed in the IMP
                                   network  for a  certain length
                                   of time without being eaten by
                                   the   destination.    In  this
                                   case,  the  IMP   flushes  the
                                   message  and sends  us  back a
                                   HOST DEAD message.

    26     0,,1000       CTROV     Foreign  host goofed  and sent
                                   us more bits than we allocated
                                   him.   The  system  closes the
                                   connection when this happens.

    27     0,,400        RSET      Foreign host sent us  a reset,
                                   which asks us to clear all our
                                   tables  of references  to this
                                   host.    The   connection   is
                                   closed.  Some sites (including
                                   CMU  and  Harvard)   will,  as
                                   standard  procedure,   send  a
                                   reset   the   first   time  we
                                   connect  to  them  after their
                                   system has  come up.   In this
                                   case,   trying    again   will
                                   succeed.   In the  more normal
                                   case, RSET means the  host has
                                   just crashed and  been brought
                                   up again.

    28     0,,200        TMO       Timeout  occurred.   Your  job
                                   was in a wait state  and timed
                                   out (see MTAPE 17).


User interrupts can  be taken on a  number of conditions.   These are
described below.  See Section 9 to find out how to enable and receive
interrupts.

    BITS   OCTAL         NAME      INTERRUPT CONDITION

    11     100,,0        INTINR    Interrupt from foreign receive
                                   side.

    12     40,,0         INTINS    Interrupt  from  foreign  send
                                   side.

    13     20,,0         INTIMS    Status change.  One or more of
                                   the  bits  CLSS,  CLSR,  RFCS,
                                   RFCR has changed.

    14     10,,0         INTINP    Some  new  input  has arrived.
                                   The  next INPUT  UUO  will not
                                   wait.  The INTINP interrupt is
                                   generated every time a regular
                                   data  message  is  received by
                                   the system.  One can  test for
                                   data  received and  waiting in
                                   the  system with  an  MTAPE 10
                                   UUO.
                             IMP MTAPEs


Now on to the MTAPEs themselves.
MTAPE           [OP=072]
--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    <function number>
        <other data depending on function number>
        ...


This is the general form of the IMP MTAPE UUOs.  The  function number
specified at ADR determines the meaning of the UUO.  What is expected
and/or returned in the words  following ADR is also dependent  on the
function number.  The various functions are explained below.

Some  of these  functions may  go into  a wait  state.  They  will be
awakened either  because of  their normal  wakeup condition,  or some
special condition.  Some of the special conditions that may occur are
specified by the bits in the right half of the I/O status  word.  For
instance, if you are waiting  for input and a reset arrives,  the job
is  awakened and  RSET is  set.   An I/O  error bit  (one  of IOBKTL,
IODTER, IODERR, IOIMPM or IODEND)  will be set if the wakeup  was due
to a special condition,  so the normal IN  and OUT UUOs will  skip if
the wakeup was not due to the normal wakeup condition.

In any operation which expects the status word to be returned in word
1 (CONNECT, LISTEN,  etc), an error code  may be returned  instead in
the rightmost 6-bits.  These errors are as follows:

    CODE    NAME    MEANING

      1     SIU     Socket in use.  There is already a connection
                    on the specified local socket number.
      2     CCS     Can't  change socket  numbers.  This  means a
                    foreign  socket number  has already  been set
                    and  an RFC  received for  this  local socket
                    number.  You  can't change the  socket number
                    because the  foreign host already  knows what
                    it is.
      3     SYS     Horrible system error.  Can't happen.
      4     NLA     No  link  available.   System   IMP  capacity
                    exceeded.
      5     ILB     Illegal byte size.
      6     IDD     IMP dead.



Here are the various IMP MTAPE functions available.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    0       ;CONNECT
ADR+1:  <status bits returned here>
ADR+2:  <local socket number, 32 bits, right-justified>
ADR+3:  <wait flag: non-zero for wait for connection>
ADR+4:  <byte size if sending, else byte size returned here>
ADR+5:  <foreign socket number>
ADR+6:  <host number, 8 bits, right-justified>


An RFC is sent to the host  whose number is in word 6 with  the local
socket number taken from word  2 and the foreign socket  number taken
from word 5.  If word 3  is non-zero, the user program goes  into RFC
wait until  timed out (see  MTAPE 17) or  until an RFC  with matching
socket  numbers  and host  number  arrives.  If  a  matching  RFC has
already arrived from  the foreign host, this  UUO will not  wait, but
will  complete the  connection immediately.   If you  wish to  open a
receive  connection, the  local socket  number must  be even  and the
foreign  socket number  odd.  To  open a  send connection,  the local
socket number must be odd and the foreign socket number even.

If  you are  opening  a receive  connection (local  socket  number is
even), and either the wait flag (word 3) is on or a matching  RFC was
already waiting, then the connection byte size is returned in word 4.
If you are opening a  send connection (local socket number  odd), you
must specify the connection byte size in word 4.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    1       ;LISTEN
ADR+1:  <status bits returned here>
ADR+2:  <local socket number>
ADR+3:  <wait flag: non-zero for wait>
ADR+4:  <byte size if sending, else byte size returned here>
ADR+5:  <foreign socket number returned here>
ADR+6:  <host number returned here>


This function is used to listen  for an RFC from a foreign host  to a
specific  socket number  here  and to  connect to  that  foreign host
automatically when the RFC is received.  If word 3 is  non-zero, this
UUO will wait for the connection to be made.

When an RFC for the  specified socket arrives from a foreign  host, a
connection  is made.   If the  local socket  number is  even (receive
side), and either the wait flag (word 3) is on or the RFC was already
waiting for you, then the connection byte size is returned in word 4.
If the local socket number  is odd (send side), you must  specify the
byte size  in word  4.  The foreign  socket number  to which  you get
connected is returned  in word 5; a  -1 is returned if  no connection
has been made (wait flag  off).  The foreign host number  is returned
in word 6.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    2       ;GET STATUS
ADR+1:  <status bits for local send side returned here>
ADR+2:  <status bits for local receive side returned here>


This function returns the status bits for both the send side  and the
receive side of a connection.  These bits are explained on  page 318.
If the connection is not open,  zero is stored.  If a reset  has been
received, both CLSS and CLSR will be on.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    3       ;TERMINATE CONNECTION
ADR+1:  <status bits returned here>
ADR+2:  <local socket number>
ADR+3:  <Wait flag: non-zero to wait for close>


This sends a  close to the foreign  host for the socket  specified in
word 2.  If word 3 is non-zero, the job is placed in CLS wait until a
return close is received, or the CLS timeout occurs (signified by TMO
being on in the I/O status word).



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    4       ;WAIT FOR CONNECTION COMPLETION
ADR+1:  <status bits returned here>
ADR+2:  <socket number>


This is  meaningful only  if a  CONNECT or  LISTEN was  given without
waiting (word 3  = 0).  In  this case, the job  is put into  RFC wait
until an RFC arrives or a timeout occurs.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    5       ;DUMP MONITOR TABLES
ADR+1:  <number of words of tables desired>
ADR+2:  <address of place to put tables>


This dumps the  monitor tables into your  core image.  The  format of
these tables is much too lengthy to be discussed here, but is sort of
described in IMPDDB[S,SYS] pages 6 and 7.  The part that is dumped is
after the label SYSTBS.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    6       ;WAKEUP MAIN PROCESS


This function is valid only when given at interrupt level.  This will
wake up the main process if it  is in any wait state due to  the IMP.
It also sets TMO in the I/O status bits.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    7       ;GET SOCKET NUMBERS AND HOST-LINK NUMBERS
ADR+1:  <host-link number for send side>
ADR+2:  <local send socket>
ADR+3:  <foreign receive socket>
ADR+4:  <host-link number for receive side>
ADR+5:  <local receive socket>
ADR+6:  <foreign send socket>


This function returns the above socket numbers and host-link numbers.
A host-link number is a 16-bit right-justified quantity.  The first 8
bits are the host number and the last 8 bits are the link number.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    10      ;SKIP IF ANY INPUT PRESENT


This function skips if there  is input waiting that has not  yet been
transferred to  the user's buffers.   Otherwise the direct  return is
taken.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    11      ;SEND INTERRUPT
ADR+1:  <status bits returned here>
ADR+2:  <local socket number>


This  function sends  an interrupt  by receiver  (INR) if  the socket
number is even (receive side) and an interrupt by sender (INS) if the
socket number is odd (send side).



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    12      ;RESURRECT IMP IF DOWN


This is a privileged UUO and is applicable only if the IMP  system is
down, in which case it attempts to bring it up.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    13      ;NO-OP (formerly BLESS HOST)


This UUO is now a no-op.  It was formerly used to clear  the system's
host-dead bit for a particular host but the system no longer  keeps a
table  of dead  hosts.  All  hosts are  assumed alive  except  for an
instant after  the IMP network  has returned a  Host Dead  message in
response to an attempt by us to send that host a message.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    14      ;TEST AND CLEAR INTERRUPTS
ADR+1:  <-1 returned here if any send side interrupts>
ADR+2:  <-1 returned here if any receive side interrupts>


This  UUO tells  you  if you  have  received either  an  interrupt by
foreign sender or an  interrupt by foreign receiver.  It  also clears
the interrupt condition.  For each of the two types of  interrupts, a
minus  one  is  returned  if  the  corresponding  interrupt  has been
received, and a zero is  returned if no interrupt has  been received.
When one of these  interrupts arrives, the corresponding  bit (INTINS
or INTINR) is set in the status word for that connection, and  if you
are  enabled  for  that  interrupt  condition,  a  user  interrupt is
generated.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    15      ;ALLOCATE
ADR+1:  <type code: 0 for as specified, 1 for system max,
          2 for min, and 3 for system default values>
ADR+2:  <number of bits of allocation (for type = 0)>
ADR+3:  <number of messages of allocation (for type = 0)>


This changes the allocation we have given the foreign host.   If this
UUO is not given, the  system default value is used, which  is fairly
small.  The system maximum is =1024 words, and the system  minimum is
2 words.  The default value  is about =50 words.  We allocate  in two
dimensions.  We allocate  both the number of  bits and the  number of
messages he may send.  Since free storage blocks are about  =50 words
long,  the system  maximum  number of  messages is  1024/50.   If the
function code (word 1) is 0, the new allocation is taken from words 2
and 3, clipped to fit within the system maximum and minimum,  and set
accordingly.  Notice  that if  the connection is  not yet  open, this
does  not actually  cause  the allocation  to happen,  just  sets the
values that will be given.  Allocation does not actually  occur until
the first IN (INPUT) UUO is  given, or an MTAPE 10 is given.   Do not
expect any input interrupts until  one of these UUOs has  been given!
If we do not allocate him anything, nothing will happen!



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    16      ;GET ALLOCATIONS
ADR+1:  <number of bits we have allocated him>
ADR+2:  <number of messages we have allocated him>
ADR+3:  <number of bits he has left>
ADR+4:  <number of messages he has left>
ADR+5:  <number of bits in free storage>
ADR+6:  <number of messages in free storage>
ADR+7:  <number of bits he has allocated us>
ADR+10: <number of messages he has allocated us>


Function 16 returns the above allocation values.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    17      ;SET TIMEOUTS
ADR+1:  <word of 6-bit bytes: number of 2-second units
          for timeouts on CLS, RFNM, ALLOC, RFC, INP;
          0 means never timeout.>


A job can enter  a wait state waiting  for any one of  five different
kinds of messages to arrive over the network: CLS (a return  close of
a connection), RFNM (a  request for new message, indicating  that the
last message sent reached its destination), ALLOC (an allocation from
a foreign receive socket, needed so that we can send some  data), RFC
(a request  for connection, necessary  to complete a  connection), or
INP (input  data from  a foreign host).   In each  of these  cases, a
timeout may be  set.  IMP MTAPE function  17 takes 6-bit  fields from
word 1 for five timeout values: CLS timeout is in bits 0:5 (770000,,0
bits), RFNM in bits 6:11  (7700,,0 bits), ALLOC in bits  12:17 (77,,0
bits), RFC  in bits  18:23 (0,,770000  bits), and  INP in  bits 24:29
(0,,7700 bits).  The  value in each field  is the number  of 2-second
units of timeout duration.  The maximum timeout duration is thus =126
(2*63) seconds.  Zero in any  field means never time out  waiting for
that condition (i.e., wait  forever for that condition).   Bits 30:35
(0,,77 bits) are not currently used.

When a  RFNM, ALLOC  or INP timeout  occurs, one  or more  I/O status
error bits are  set (which will  cause an IN or  OUT UUO to  take the
error  return).   When an  RFC  or  CLS timeout  occurs,  the  UUO in
progress just goes on as if it had never tried to wait.  When  any of
the  five  timeouts occurs,  the  timeout  bit (TMO)  is  set  in the
connection status word.

Note that we can go into  CLS wait inside a CONNECT or LISTEN  if the
local socket  has a half-closed  connection associated with  it.  For
this reason, it is always good to wait at least a few seconds for the
return CLS.

The system default timeout values  are 6 seconds for CLS,  40 seconds
for RFNM, and no timeout for ALLOC, RFC, and INP.



--------------------------------------------------
        MTAPE <channel number>,ADR

ADR:    20      ;GET TIMEOUTS
ADR+1:  <current timeout word returned here>


Function  20 returns  the current  timeout word  as defined  above in
function 17.
                  13.14  The PDP-11 Interface: ELF


The  PDP-11 interface  (device ELF)  allows programs  running  on the
PDP-10 to  access the PDP-11  and can be  operated only in  dump mode
(mode 16 or 17).  The IN/INPUT and OUT/OUTPUT UUOs should point  to a
single IOWD word, which does NOT need to be followed by a zero word.
                     ELF I/O Status Word Summary


    BITS   OCTAL         NAME      MEANING OF A 1

    18     0,,400000     IOIMPM    Improper  mode   specified  in
                                   INIT or OPEN.
    19     0,,200000     IODERR    An  error occurred  during the
                                   last data transfer, turning on
                                   one of the bits: NXM11, BUSTO,
                                   PARITY, or HUNG.
    20     0,,100000               Unused.
    21     0,,40000      NXM11     No response from the addressed
                                   UNIBUS location.
    22     0,,20000      BUSTO     Interface  couldn't   get  the
                                   UNIBUS.
    23     0,,10000      IOACT     Unused.
    24     0,,4000       BUSNIT    You  lost  because   a  Unibus
                                   reset is going on.
    25     0,,2000       PARITY    Bad parity indication.
    26     0,,1000       HUNG      Interface        is       hung
                                   irretrievably.
    27     0,,400                  Unused.
    28     0,,200        BGRAB     Interface is holding  onto the
                                   UNIBUS    (the    PDP-11    is
                                   hanging).
    29     0,,100        NRETRY    Don't retry on NXM11 or HUNG.

If NXM11 or HUNG is on, the system has tried =10 times  before giving
up unless NRETRY is on.  It always retries =10 times on BUSTO.
                 UUOs with Special Meanings for ELF
USETI           [OP=074]
--------------------------------------------------
        USETI <channel number>,ADR

ADR:    <flag and input mode>,,<flag and input UNIBUS address>


The USETI UUO to device ELF is used to set the input mode  and/or the
beginning  UNIBUS address  for the  next input  operation.  If  bit 0
(400000,,0 bit) of the word at ADR is on, the input mode is  set from
bits 13:17 (37,,0 bits) of ADR.  If bit 18 (0,,400000 bit) of  ADR is
on, the output UNIBUS address is set from bits 19:35 (0,,377777 bits)
of ADR.  All of these  bits are explained in the table  following the
USETO UUO below.
USETO           [OP=075]
--------------------------------------------------
        USETO <channel number>,ADR

ADR:    <flag and output mode>,,<flag and output UNIBUS address>


The USETO UUO to device ELF is used to set the output mode and/or the
beginning UNIBUS  address for  the next output  operation.  If  bit 0
(400000,,0 bit) of the word at ADR is on, the output mode is set from
bits 13:17 (37,,0 bits) of ADR.  If bit 18 (0,,400000 bit) of  ADR is
on, the output UNIBUS address is set from bits 19:35 (0,,377777 bits)
of ADR.  All of these bits are explained in the table below.

    BITS   OCTAL         NAME      MEANING     OF     FIELD    IN
                                   USETI/USETO WORD FOR ELF

    0      400000,,0               If  this bit  is on,  the mode
                                   for  transfers  in  the  given
                                   direction  (input   if  USETI,
                                   output if  USETO) is  set from
                                   bits  13:17  (see  below).  If
                                   this  bit  is  off,  the  mode
                                   remains as it was before.

    13     20,,0         NOPAR     Ignore parity errors.

    14     10,,0         GRAB      Hold on  to the  UNIBUS during
                                   and  after the  transfer.  Any
                                   error   condition   that  sets
                                   IODERR will release the bus.

    15     4,,0          SGNEXT    Extend the sign of input data.

    16:17  3,,0                    Data packing mode,  decoded as
                                   follows
                        0--One PDP-11 word per word, right-justified.
                        1--Two words per word, right-justified.
                        2--Two words per word, in right-most 32 bits.
                        3--Two words per word, in left-most 32 bits.

                                   In  the  two-word  modes,  the
                                   higher-order  PDP-11  word  is
                                   the  one at  the  first UNIBUS
                                   address.   Sign  extension has
                                   no  effect   in  mode   3;  it
                                   operates   on   each  halfword
                                   separately in mode 1.

    18     0,,400000               If  this  bit is  on,  the bus
                                   address for the  next transfer
                                   in the given direction  is set
                                   from bits 19:35.  If  this bit
                                   is  off,  the  address remains
                                   where  the  last  transfer  in
                                   this    direction    left   it
                                   (pointing   to    the   UNIBUS
                                   address  immediately following
                                   the  last  word  transferred).
                                   Note that these are  word, not
                                   byte, addresses.

    19:35  0,,377777     BUSADR    If  bit 18  above is  on, this
                                   field holds the UNIBUS address
                                   for the  next transfer  in the
                                   given direction.
UGETF           [OP=073]
--------------------------------------------------
        UGETF <channel number>,ADR

ADR:    <USETI word>
        <USETO word>


The UGETF  UUO for  device ELF returns  the states  of the  USETI and
USETO pointers  and modes  in the  two-word block  pointed to  by the
effective address  of the UUO.   The USETI value  is returned  in the
first word and the USETO value in the second word of the  block.  The
results are  stored with bits  0 and 18  (400000,,400000 bits)  on so
that a subsequent USETI or USETO addressed to one of these words will
set both the mode and the bus address.
RELEAS          [OP=071]
--------------------------------------------------
        RELEAS <channel number>,


The  RELEAS  UUO for  device  ELF resets  the  interface,  clears its
interrupt enablings, and sets the USET pointers to 400000,,400000.
MTAPE           [OP=072]
--------------------------------------------------
        MTAPE <channel number>,ADR
        <error return>

ADR:    <instruction>
        <data>


The MTAPE  UUO for device  ELF does various  things depending  on the
contents of ADR.  ADR+1 either contains data that will be  written to
the 11 or receives data read  from the 11.  In case of an  error, the
appropriate error bits will be on in the ELF's I/O status  word.  The
general form of the <instruction> at ADR is as follows:

    BITS   OCTAL         MEANINGS OF FIELDS IN <INSTRUCTION>

    0:8    777000,,0     Operation code, see explanations below.
    9:12   740,,0        Unused.
    13:17  37,,0         Mode, as  in a USETI  or USETO  UUO (see
                         above).
    18     0,,400000     Unused.
    19:35  0,,377777     UNIBUS address.

The mode and address of an MTAPE have no effect on the  USET pointers
or the operation  of subsequent INs and  OUTs, except that  the BGRAB
state of  the interface (and  the BGRAB bit  of the I/O  status word)
reflect the state left by the last operation performed.  That is, the
mode and address specified in an MTAPE affect that MTAPE only (except
for the BGRAB bit).

    OPCODE NAME      FUNCTION EXECUTED

      1    FILL      The   <data>   word   is    interpreted   as
                     <number>,,<const>.   The  value  <const>  is
                     written  into  <number>   consecutive  words
                     beginning  at the  specified  address.  Mode
                     bits 16:17 (3,,0 bits) are ignored.

      2    PEEK      One or  two PDP-11  words (depending  on the
                     mode) are read into ADR+1.

      3    POKE      The <data> is written into one or two PDP-11
                     words  (depending   on  the  mode)   at  the
                     specified address.

      4    BUSREL    The  interface  is  cleared  and  forced  to
                     release the UNIBUS  if it is in  BGRAB mode.
                     The BGRAB  bit is  cleared.  The  mode field
                     and the bus-address field are ignored.

Other MTAPEs for poking buttons on the PDP-11's console will be added
when the hardware is built.
                13.15  The Voice Synthesizer (Voder)


The voice synthesizer, or voder, (device VOD) can only do  output and
must be operated in mode 10.  The buffer size is =20 data words.  The
data in the user's buffer is sent directly to the voder.

The voder interface  interprets each word  as four 9-bit  bytes.  The
400  bit  of  each byte  is  the  valid bit.   The  other  eight bits
represent a phoneme.  Care should be taken to avoid the  phoneme with
value zero because this will  cause the voder to stop;  the remainder
of the buffer will not be transmitted until later and data may become
lost.

For a  description of  the correspondence  between phonemes  and byte
values, see the section on  the voder in the FACILITY  MANUAL (SAILON
56) by Ted Panofsky (found online as FACIL.TED[H,DOC]).

There is no  special DEVCHR bit for  the voder.  Only the  UUOs: OPEN
(and INIT),  OUT (and  OUTPUT), CLOSE  and RELEAS  are valid  for the
voder.  LOOKUP, ENTER, RENAME, and MTAPE are no-ops.
              13.16  The Cart Control Transmitter (CAR)


The cart control transmitter (device CAR) is used to send commands to
the cart.   This device  can be used  only in  mode 10.   The default
buffer size is =20 data words and any data beyond the first =20 words
in each buffer will be ignored.  Smaller buffers are permitted.

The cart control transmitter  is controlled through the  cart control
interface.
                     The Cart Control Interface


The  cart  control  interface  consists  of  an  array  of  =18 power
transistors used to operate the cart control transmitter and whatever
lights, relays and similar things happen to be connected to it at the
moment.  Each transistor is capable of sinking up to two amps  from a
positive voltage of  up to 60 volts  to ground.  The  transistors are
labelled =18 through =35.

The on/off state of each transistor  can be altered by a CONO  to the
cart control interface.  The  right halfword of the CONO  consists of
two bits of control information (bits 18:19--0,,600000 bits), and =16
bits of mask (one bit for each of transistors =20 through =35 in bits
20:35--0,,177777  bits).    A  one  bit   in  this  mask   means  the
corresponding  transistor is  to  be affected.   The  following table
gives the current use  of each of the  CONO bits to the  cart control
interface.

    BITS   OCTAL         CONO BITS TO CART CONTROL INTERFACE

    18     0,,400000     This   bit   determines    whether   the
                         transistors  selected  by  ones  in bits
                         20:35 (0,,177777 bits) are to  be turned
                         on or off.  A zero in this  bit position
                         causes the selected transistors to be on
                         (i.e., to pull to ground), whereas a one
                         in   this   bit   causes   the  selected
                         transistors to be off.
    19     0,,200000     This bit being on causes retriggering of
                         a  one  shot  which  has  a   period  of
                         approximately one  second; the  one shot
                         controls the state of transistors 18 and
                         19.  Transistor 18  is off and 19  is on
                         when  the one  shot is  active,  and the
                         reverse is  true when  the one  shot has
                         timed  out.   Transistor  18  operates a
                         relay which,  when off, causes  the cart
                         control  transmitter  to  be  on.   This
                         means that the transmitter is on the air
                         only  as  long as  cart  CONOs  with the
                         0,,200000  bit  on are  issued  at least
                         once a second.
    20:35  0,,177777     The transistors among  =20 to =35  to be
                         affected  by this  CONO are  those whose
                         bits are on in this mask.  The effect on
                         these selected transistors is determined
                         by the value  of bit 18  (0,,400000 bit)
                         above.   The current  uses of  these =16
                         transistors   are   indicated   in   the
                         following individual descriptions.  Note
                         that transistors 27:35 (0,,777 bits) are
                         never  affected  by  output   to  device
                         CAR--see below.
    20     0,,100000     (Currently unused.)
    21     0,,40000      Controls the pan-left cart function.
    22     0,,20000      Controls the pan-right cart function.
    23     0,,10000      Controls the steer-left cart function.
    24     0,,4000       Controls the steer-right cart function.
    25     0,,2000       Controls the drive-on cart function.
    26     0,,1000       Controls the cart drive direction.
    27:34  0,,776        (Currently unused.)
    35     0,,1          Operates the UDP unload light.

A CONI to the cart  control interface returns a word with  bits 20:35
(0,,177777 bits) indicating the current states of  transistors 20:35,
where  a one  in a  particular bit  position means  the corresponding
transistor is off.  Bits  0:19 (777777,,600000 bits) of  the returned
word will always be zero.
                           The Transmitter


Device CAR can be used to put the 0,,177000 bits of the  cart control
interface  through an  accurately  timed sequence  of  states without
affecting the 0,,777 bits.  This is done by outputting data  words to
device CAR in mode 10.

Each data word output to device CAR is interpreted as a  cart command
unless the  sign bit (bit 0--400000,,0)  is on (see  next paragraph).
Bits 20:26 (0,,177000) of each cart command contain a mask specifying
a state for transistors 20:26 of the cart control interface--a one in
a particular bit position means that the corresponding  transistor is
to  be on.   The  left half  of  each cart  command  (777777,,0 bits)
contains the number of ticks (60ths of a second) for which this state
is to be maintained.  The system executes commands from a  buffer one
at a  time, issuing  CONOs with the  0,,200000 bit  on at  least once
every half second.

When the last  command in a buffer  has finished, the system  sends a
default state at  a given rate.  The  default state is initially  a 0
sent once every half second, but this can be altered by  including in
any buffer a  control word with the  sign bit on  (bit 0--400000,,0).
Bits 20:26 (0,,177000 bits) of  such a control word are taken  as the
default  state for  transistors 20:26,  where a  one in  a  given bit
position means the corresponding  transistor is to be on.   Bits 1:17
(377777,,0)  of a  control word  are interpreted  as the  interval in
60ths of a second between times this default state is  sent.  Control
words of this kind do nothing but set these defaults.

Bits  18:19  and  27:35  (0,,600777 bits)  are  unused  both  in cart
commands and in control words, and cart control interface transistors
27:35 are unaffected by output to device CAR.
                  SECTION 14--SPECIAL I/O GADGETS


This  section  describes various  special  I/O gadgets  that  are not
DEVICES  (in the  standard  system meaning)  in that  they  cannot be
INITed.  Included here are the dialer, the III display processor, and
the Data Disc display system and interface.
                          14.1  The Dialer


The automatic dialer is provided for programs that want to be able to
dial up a telephone number.  The dialer is accessed through  the DIAL
UUO, which is explained below.
DIAL            [OP=047, ADR=400117]  CALLI 400117
--------------------------------------------------
        MOVEI AC,ADR
        DIAL  AC,
        <error return, error code in AC>

ADR:    <dialer number>,,<function number>
        <area code if dialing--see format below>
        <telephone number if dialing--see format below>

 Error codes:
  0  Illegal dialer number.
  1  Dialer in use by someone else.
  2  Do not have TTY11 open on an I/O channel.
  3  Attempted to dial while call in progress (should hang up first).
  4  Dialing failure.


The DIAL UUO permits program control of dialing out on the phone line
which is  connected to the  system as TTY11.   After completion  of a
call, TTY  input and/or  output can  be done  over the  phone through
TTY11.  The AC specified in  the DIAL UUO should contain  the address
of a data block, the first word of which specifies a DIALER NUMBER in
the left  half and a  FUNCTION NUMBER in  the right  half.  Currently
there is only one dialer and  thus the dialer number must be  zero in
all calls of this UUO.  The function number determines  what function
the  DIAL UUO  is to  carry out.   The various  dialer  functions are
listed below; you must do a CLAIM DIALER (function 0) before  you can
execute any of  the other functions  (for a specific  dialer number).
The second and  third words in  the data block  are used only  if the
function number specifies dialing a number.

  CODE   FUNCTION FOR DIAL UUO

     0   Claim dialer.  This claims the indicated dialer for your job
         and must be executed before any other function  is performed
         with this dialer number.

     1   Get dialer  status.  This  returns in  AC left  the dialer's
         CONI value as of the  last dialer interrupt and in  AC right
         the value from a  current dialer CONI.  The meanings  of the
         dialer CONI bits are listed in the table below.

             BITS   OCTAL         MEANINGS OF 1'S IN  DIALER CONI
                                  BITS

             24     0,,4000       Data  set  answered,  or  voice
                                  call.  Bit 28 ← 1.
             25     0,,2000       Data set disconnect.  Bit  28 ←
                                  0.
             26     0,,1000       Busy.    The   dialer   or  its
                                  dataphone is in use.
             27     0,,400        Data phone not hung (OK).
             28     0,,200        Data set connected.
             29     0,,100        Voice call--connected  to AD/DA
                                  after completion.
             30     0,,40         Power failure on the dialer.
             31     0,,20         Interrupt.  Bits 24, 25, 27 and
                                  30 cause interrupts.
             32     0,,10         Interrupt enabled.
             33:35  0,,7          Interrupt channel.

     2   Dial a number.  The word at ADR+1 holds the area code in the
         following format:

             BITS   OCTAL         DIALER AREA CODE FORMAT

             0:17   777777,,0     Unused.
             18:21  0,,740000     First digit of area code.
             22:25  0,,036000     Second digit of area code.
             26:29  0,,001700     Third digit of area code.
             30:35  0,,77         Unused.

         The word at  ADR+2 holds the  remaining seven digits  of the
         phone number in this format:

             BITS   OCTAL         DIALER PHONE NUMBER FORMAT

             0:5    770000,,0     Unused.
             6      4000,,0       Dial area  code if this  bit is
                                  on.
             7      2000,,0       Switch phone to AD/DA when call
                                  completed.  This feature is not
                                  implemented!
             8:11   1700,,0       First digit of phone number.
             12:15  74,,0         Second digit of phone number.
             16:19  3,,600000     Third digit of phone number.
             20:23  0,,170000     Fourth digit of phone number.
             24:27  0,,7400       Fifth digit of phone number.
             28:31  0,,360        Sixth digit of phone number.
             32:35  0,,17         Seventh digit of phone number.

     3   Hang up the dialer's phone.

     4   Release dialer (automatically done if you release TTY11).
                     14.2  III Display Processor


The  III  display  processor   is  itself  a  small   computer.   The
instructions that it executes form the display.  In order for  a user
to use  the display processor,  he must compile  display instructions
into his program and ask the system to give these instructions to the
display processor.  See  Section 4.1 and  Section 4.4 for  details on
getting  the  system  to  run  your  display  program.   This section
explains the  instructions that  can be executed  by the  III display
processor.
                           TSS Instruction


Test, set, and skip                                        Opcode 12
_____________________________________________________________________
|0         7|8         15|16       23|24       30|  31   |32      35|
|   RESET   |     SET    |    TEST   |   unused  |   I   |   1010   |
|___________|____________|___________|___________|_______|__________|

A skip condition is generated if  at least one of the eight  flags is
on  and  the corresponding  bit  in the  TEST  field is  on.   If the
exclusive  or of  the skip  condition and  bit 31  is true,  the next
instruction is skipped.  The flags are then set or reset according to
the set  and reset field.   If both  set and reset  bits are  on, the
corresponding flag is complemented.  The flags are as follows:

    BITS   OCTAL         FLAG MEANING

    0,8,16 401002,,0     Control  bit.   This  bit  may  be  set,
                         reset,  and  tested  but  has  no  other
                         meaning to the processor.

    1,9,17 200401,,0     Light pen flag.   The bit is set  if the
                         light pen is seen.

    2,10,18100200,,400000Edge overflow flag.  This bit is  set if
                         the  beam  is  ever  positioned  off the
                         screen by any means.

    3,11,1940100,,200000 Wrap-around  flag.  This  bit is  set if
                         overflow  occurs  in  incremental vector
                         mode.

    4,12,2020040,,100000 Not running  mask.  If  this bit  is on,
                         the processor  will interrupt if  a halt
                         is executed.  This bit cannot be  set or
                         reset by this instruction.

    5,13,2110020,,40000  Light pen mask.  If this bit is  on, the
                         processor  will interrupt  if  the light
                         pen flag comes on.

    6,14,224010,,20000   Edge overflow mask.  If this bit  is on,
                         the processor will interrupt if the edge
                         overflow flag comes on.

    7,15,232004,,10000   Wrap-around  mask.  If  this bit  is on,
                         the  processor  will  interrupt  if  the
                         wrap-around flag comes on.
                           LVW Instruction


Long vector word                                           Opcode 06
_____________________________________________________________________
|0        10|11       21|22     24|25     27|28| 29  |30 31|32    35|
|     X     |     Y     |   BRT   |   SIZE  |  |  M  |  T  |  0110  |
|___________|___________|_________|_________|__|_____|_____|________|

The long vector word draws one vector with mode, type  and brightness
as specified by the  M, T, and BRT  fields respectively.  A 0  in the
BRT  field  indicates no  change  in brightness.   1  is  the dimmest
intensity and  7 the brightest.   The brightness affects  all vectors
and characters until reset by another long vector word.

Mode 0  indicates relative  mode and 1  indicates absolute  mode.  In
absolute mode, the  new position is given  by the X and  Y components
relative  to  the  center  of  the  screen.   In  relative  mode  the
components  are  added  to  the  current  position  to  give  the new
position.

    TYPE    MEANING

     0      Visible.
     1      End point.
     2      Invisible.
     3      Undefined, currently end point.

A  visible vector  is  drawn from  the  current position  to  the new
position; the  invisible vector  moves the beam  to the  new position
without displaying; the  end point vector moves  the beam to  the new
position and then displays a point.

The size field  sets the character size.   The selected size  is used
for all  characters until reset  by another long  vector word  with a
non-zero character size field.  The sizes are:

    SIZE    CHARS PER LINE       LINES PER SCREEN

     0      no change            no change
     1      128  (smallest chars)64
     2      85                   42
     3      73                   36
     4      64                   32
     5      42                   21
     6      32                   16
     7      21  (largest chars)  10
                           SVW Instruction


Short vector word                                          Opcode 02
_____________________________________________________________________
|0       6|7      13|14    15|16     22|23     29|30    31|32     35|
|   dX1   |   dY1   |   T1   |   dX2   |   dY2   |   T1   |  0010   |
|_________|_________|________|_________|_________|________|_________|

The short vector word always draws two vectors in relative mode.  The
type of each  vector is specified by  the corresponding T  field (see
the long vector word  above).  The high order  bits of the dX  and dY
fields are extended left to give 11-bit quantities.
                           CHR Instruction


Character word                                              Opcode 1
_____________________________________________________________________
|0         6|7        13|14       20|21       27|28       34|  35   |
| character | character | character | character | character |       |
|     1     |     2     |     3     |    4      |     5     |   1   |
|___________|___________|___________|___________|___________|_______|

The character word displays the five characters in order from left to
right  with  automatic  spacing.   All  characters  are  displayed as
printed on the line printer with the following exceptions:

    CODE    III CHARACTER

    011     None.
    013     Integral sign.
    014     Plus-or-minus sign.
    177     Circumflex.
                           JMP Instruction


Jump                                                       Opcode 20
_____________________________________________________________________
|0                              17|18                 30|31       35|
|               A                 |        unused       |   10000   |
|_________________________________|_____________________|___________|

The processor jumps to location A and continues executing.
                           HLT Instruction


Halt                                                       Opcode 00
_____________________________________________________________________
|0                              17|18                 30|31       35|
|             unused              |        unused       |   00000   |
|_________________________________|_____________________|___________|

The processor stops  with its MA  pointing to the  location following
the HALT.  The not running flag is turned on.
                           JMS Instruction


Jump to subroutine and save                                Opcode 04
_____________________________________________________________________
|0                              17|18                  31|32      35|
|               A                 |        unused        |   0100   |
|_________________________________|______________________|__________|

The JMS  instruction is  not allowed  in user  III programs,  but its
description is included here for completeness.

The following word of information is written into location A:

_____________________________________________________________________
|0                              17|18        22|23      30|31     35|
|                MA               |     CPC    |  unused  |  10000  |
|_________________________________|____________|__________|_________|

where CPC is the contents of the CPC buffer register.   This register
is  loaded whenever  the processor  discovers an  interrupt condition
while processing a character word or short vector word.  It is set to
the number of  the character being displayed  (0-4) or the  number of
the vector of  the short vector  word (0-1).  It  is reset by  a CONO
430, with the clear flags bit on.

The following information is written in location A+1:

_____________________________________________________________________
|0          10|11         21|22       24|25       27|28           35|
|      X      |      Y      |    BRT    |    SIZE   |     FLAGS     |
|_____________|_____________|___________|___________|_______________|

Here are the meanings of the flag bits (see also the  TSS instruction
above).

    BITS   OCTAL         MEANING

    28     0,,200        Control bit.
    29     0,,100        Light pen flag.
    30     0,,40         Edge overflow flag.
    31     0,,20         Wrap around flag.
    32     0,,10         Wrap around mask.
    33     0,,4          Light pen mask.
    34     0,,2          Edge overflow mask.
    35     0,,1          This bit is always 1.

After storing  the above words  at A and  A+1, the  program continues
executing at A+2.

Note that the word stored in A is in the form of a  jump instruction.
This permits the subroutine to return by jumping to A.
                           JSR Instruction


Jump to subroutine                                         Opcode 24
_____________________________________________________________________
|0                              17|18                 30|31       35|
|               A                 |        unused       |   10100   |
|_________________________________|_____________________|___________|

The JSR instruction saves a PC word into location A and then executes
code from location  A+1.  The PC  word is in  the same format  as the
word stored in location A by the JMS instruction.  The word is a jump
instruction so that the subroutine return can be simply a jump to A.
                          SAVE Instruction


Save                                                       Opcode 64
_____________________________________________________________________
|0                              17|18                 29|30       35|
|               A                 |        unused       |  110100   |
|_________________________________|_____________________|___________|

The save instruction saves a position word in location A.   This word
is in the same format as the word put into A+1 by the JMS instruction
and  is in  the correct  format to  be used  by the  REST instruction
below.
                          REST Instruction


Restore                                                    Opcode 14
_____________________________________________________________________
|0                              17|18        29|  30 |  31 |32    35|
|                B                |   unused   |  P  |  F  |  1100  |
|_________________________________|____________|_____|_____|________|

The contents of  location B are  assumed to be  in the format  of the
word stored in location A+1 by a JMS or the word stored in location A
by a SAVE.  If bit 30 is a 1, the X and Y position registers  and the
size  and brightness  registers are  reloaded from  the corresponding
fields of this word.  If bit 31 is a 1, the flags are restored.
                           SEL Instruction


Select (displays)                                          Opcode 10
_____________________________________________________________________
|0                 11|12                 23|24           31|32    35|
|         SET        |        RESET        |     unused    |  1000  |
|____________________|_____________________|_______________|________|

If  any  of bits  0:11  (777700,,0 bits)  are  on,  the corresponding
displays are selected.   If any of  bits 12:23 (77,,770000  bits) are
on, the  corresponding displays are  deselected.  If both  the select
and deselect bits are on for a given display, the state  of selection
of that display will be  complemented.  Note that we have only  6 III
displays at Stanford; only bits 0:5 (770000,,0 bits) and 12:17 (77,,0
bits) are relevant in the SET and RESET fields.
                   14.3  Data Disc Display System


The Data Disc  display system uses a  =64-track disc rotating  at =60
r.p.s. to store TV images.   The terminals used with this  system are
standard  television monitors.   Each picture  on the  disc  uses one
CHANNEL,  which  is  two  disc  tracks.   The  tracks   are  switched
alternately every 60th of a  second--one track for each field  of the
standard television  raster.  Characters and  graphics are sent  to a
one-line buffer and then commanded to be written.  Characters must be
written twice; once for each field.

There  is  an interface  that  takes display  instructions  from main
memory and sends data to the Data Disc.  The display instructions are
used to change the pictures stored on the disc.  A user can  have his
own display programs executed by the Data Disc interface by using the
UUOs explained in  Section 4.4; see  also Section 4.2.   This section
describes  the  display instructions,  how  they are  handled  by the
interface and their effects on Data Disc pictures.



The Data Disc system itself operates in two modes: text and graphics.
In text mode,  each byte sent  to the Data  Disc is interpreted  as a
character and will be displayed in the current column on  the current
line; each  column position  is one  character wide  (6 bits  wide in
single width character mode, =12 bits wide in double  width character
mode).  Characters must be written  on the disk twice, once  for each
track  of  the  given  channel.   In  graphics  mode,  each  byte  is
interpreted as eight bits to be written on the disk exactly  as sent.
The  bits are  written  on the  current  line at  the  current column
position.  Each column position in graphics mode is 8 bits wide.

Normally, in both  graphics and text modes  data is sent to  the Data
Disc line buffer and is not written onto the disc until an execute is
received by the Data Disc system.  It is possible, however,  to write
directly onto the disc without use of the line buffer.  See the Write
Directly command in the command word description below.



Now  here  are  the display  instructions  which  the  interface will
accept.
                              Text Word


Text word                                           Opcode 1
 ___________________________________________________________
|0        6|7         13|14      20|21      27|28     34| 35|
|   chr1   |    chr2    |   chr3   |   chr4   |   chr5  | 1 |
|__________|____________|__________|__________|_________|___|
|    |    |    |    |    |    |    |    |    |    |    |    |

A text  word causes the  interface to send  five bytes to  the disc's
line  buffer.  Tabs  (011) and  backspaces (177)  are  ignored unless
preceded by a backspace, in which case a special character is sent to
the line  buffer (e.g., a  small "tb" will  be printed  for 177&011).
Nulls are always ignored.  Carriage return and linefeed are specially
processed  to  do  the  right  thing:  If  any  characters  have been
transmitted to the  line buffer since  the last execute  command (see
command word  below), an execute  is generated.  (Execute  causes the
line  buffer to  be  written onto  the disc.)   Carriage  return then
causes a select to column 2, and linefeed increments the line address
by =12.  (If  you are displaying  double-height text, then  each line
should be ended with a carriage return and TWO linefeeds in order for
subsequent lines  to be positioned  properly.)  Both  carriage return
and linefeed print special characters instead of the  above functions
when preceded by a 177.  Note: The Data Disc must be in text mode for
the  bytes sent  to  it to  be written  onto  the disc  as  text.  In
graphics mode, these same bytes will be written as graphic bits.
                            Graphics Word


Graphics word                                      Opcode 02
 ___________________________________________________________
|0          7|8          15|16        23|24        31|32  35|
|   byte 1   |   byte 2    |   byte 3   |   byte 4   |  02  |
|____________|_____________|____________|____________|______|
|    |    |    |    |    |    |    |    |    |    |    |    |

A graphics word causes the  interface to send 4 8-bit  bytes directly
to the disc's line buffer with no modification.  Note: The  Data Disc
must be in graphics mode for the bytes sent to it to be  written onto
the disc as  graphics bits.  In text  mode, these same bytes  will be
written as characters.
                          Halt Instruction


Halt                                       Opcodes 0, 40, 60
 ___________________________________________________________
|0                                              29|30     35|
|                      unused                     |    X0   |
|_________________________________________________|_________|
|    |    |    |    |    |    |    |    |    |    |    |    |

A halt stops the interface, terminating the display program.
                          Jump Instruction


Jump                                               Opcode 20
 ___________________________________________________________
|0                          17|18               29|30     35|
|        jump address         |       unused      |   20    |
|_____________________________|___________________|_________|
|    |    |    |    |    |    |    |    |    |    |    |    |

A  jump  word  causes  the  interface  to  take   subsequent  display
instructions starting at  the address contained  in the left  half of
the jump word.
                            No Operation


No-op           Opcodes 06,16,26,36,46,56,66,76, 12,32,52,72
 ___________________________________________________________
|0                                              29|30     35|
|                      unused                     |   XX    |
|_________________________________________________|_________|
|    |    |    |    |    |    |    |    |    |    |    |    |

Opcodes ending in  6 or 12 have  no function.  The  interface ignores
them and proceeds.

WARNING: Opcodes ending in 10 (10, 30, 50, 70), previously advertised
as no-ops, are  not no-ops at all;  they are actually  command words,
although their use as such  is not recommended because the 10  bit is
part of the third command code (OP 3 in the command word below).
                            Command Word


Command word                                        Opcode 4
 __________________0`000A@```A@```A@```A@```A@```A@```A@```@h+qAα↓↓↓↓α↓↓↓↓?aa↓↓α↓↓↓↓α↓EWq1↓↓↓α↓↓↓↓β⊃OqI#⊃[qI;⊃gqMβ→KqM≠→Wp4Wa↓↓β&S¬↓
↓↓βqα↓β∪π&	↓I↓αβq↓↓αβ∪πS
↓M↓↓πc?A↓∂c?A↓↔c?A↓∨a↓Q↓π`4+pA@```A@```ACp``A@```A@``ca@```A@```A@`cpA@`cpA@`cpA@`cpA@`cphSq↓↓αβq↓↓αβq↓↓αβq↓↓αβq↓↓αβq↓↓αβq↓↓αβq↓↓αβq↓↓αβq↓↓αβq↓↓αβq↓↓αβp4(hR¬↓β≡{77πv!β←?⊗!↓β∂∂+O↔Mπ##∃↓εK;S↔⊗3π∂∃π#=↓β≡+;⊃β&C∃↓α&S¬↓∧#'O
π##K↔(h+∂?nkπ;∪~aβπMεK;∪'≡S↔⊃ε?[*βe↓⊗{A↓Eb⊃↓?α↓I	β∞s⊃↓␈↓↓M9∩↓αO↔w!β←'&@4+↔∞≠!β∂}k7π;"↓β'Mε9↓an∪'Q↓ε#πS¬ε∪gS∃r↓αS#*↓β∂?nkπ;∪~βC?O≡K3∃αβπK∃εL4+6{33??→h4(hQ↓↓↓α↓α>Aα↓↓α∞|j6ε:"α:ε6*↓↓↓↓α↓↓↓αl*ε:&t9↓α>2↓α∩ε$	↓α∩M~
↓α≤z66εt 4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αα↑>J"α>@4Ph)↓↓α↓↓↓Aα↓↓↓α/C↔∂W&)↓↓↓α↓↓↓↓α↓↓↓↓¬;K'S*βS#∃αβ3';*βW≠6+I↓β}sS=β&C∀4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β∪'≡→βπQπ##∃↓πβ?O'&K?9βπ∪↔['␈+O3dhQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β∨β↔∂'6K↔⊃9α↓αS#*↓β∪π&	↓βO#∃↓βO_4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ'KK.c↔[πw!β≠?∩βS#'~β∂?7n;⊃8hP4)↓α↓↓↓↓
↓↓↓↓∧3W;∂&K?9β≡{∪∃↓α↓↓↓↓αα3?π"βS#∃ε3W;∂&K?9↓ε≠?∪∃π∪↔∨'∨#↔H4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β←O#!βSF)↓β∨O3↔9β&S¬↓ε∪gS∃r↓αS#(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓εk↔π;Ns∨M↓ε{→↓β&C∃↓β⊗KSM↓εK9↓β&C∀4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β≠Wv≠S'?r↓↓β∂}#∃↓↓π∪↔∨'∨#↔I↓αβπK∀hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β/CC3πNs↔⊃β⊗+3?]ph(4)α↓↓↓↓β⊃↓↓↓αα∂#πvs↔1β≡+3↔∂"↓↓↓↓α↓αO↔f+∂Qβ&C∃β∂F;;↔b↓βOC.≠'≠'.!β'8hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β&C∃β∪∂#¬↓β↔KS∃β6{I↓β?∪'S'v99↓αN04)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβS#∃αβ↔Kπ≡)↓βO!↓β'~↓β?9αβπ;⊃π##∀4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β∨⊗C#'∨→↓β7}#∃βO!↓β'~↓βO↔"aβS#(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ε≠#π;v+1↓β≡+3↔∂&+⊃↓βO→↓β↔⊗O↔⊃π#<4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βS#*↓βπ≡[∨K?.s⊃βO.c↔∂S.!↓βJβS#∀hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β&K-?fK∨#Qε∪'Q9αα?;3J↓βS#*β≠'K∨ 4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ∂#πvs↔1β≡+3↔∂"↓β'9ε	↓α∩"β∪'Oεcπd4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓βC⊗{∨Kπjβ#πMε;eβ.3≠↔∂"p4(4R↓↓↓↓α↓M↓↓α↓α∂?g+79β≡+3↔∂"↓↓↓↓α↓↓αSF)β∪π&	βg&)β'Mεc?π∪.!β';&yβS#(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ε≠?3Wnq↓βK.;'OS/⊃↓βπv!↓βSF)↓β3Ns∀4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βW63↔I↓ε∪∪K/≠M↓β⊗+∨'O&+I9↓¬##'LhQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β≡+SM↓π##∃↓¬A7C?≡KS'?r↓↓β?2↓βg?/⊂4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ?WSπ+Q9↓∧≠?3Wnq↓AβO→β'3f+∨π1ε;⊂4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β←Nc1↓↓εCπ;≥α↓↓βSF)↓↓β≡{;SK}c3↔Iph)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓∧≠?3Wnq↓ua*β'Mβ&C∃β3∂≠Qβ∂}cW79π#<4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β∃αβ∪'Oεcπg↔"↓β←'&A↓β;␈∪7π1π≠'k∀hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β≡CπKπ∨#↔KMZβ∂#π⊗∂S↔↔→↓βO.sQβ≠␈⊂4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ∂?3.k;M↓βiaY↓π##K?.;!↓↓k	Ia↓εK∀4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β≠g+O#↔"a↓β?6+I↓↓k	Ia1αβg?Uαβ←Kπh)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓εK?Wv!9↓α
β∂?3.k9βO.c↔∂Qε;K↔π&+H4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βS#∞q↓↓uC)↓β←Nc1↓β∞cO=↓εCπ;≥αβS#∀hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β≡{;SK}c3↔Ir↓↓αSF)↓β3∂≠Qβ∨⊗C#'∨_4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβ∂?3.k9↓↓εKM↓↓βiYQ↓αβπ;⊃αβ∂?3.k;L4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β∨⊗+πS↔∩βS#πrβS#π"β←'3b↓β#πv9βS#(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ε≠?;S⊗{33↔∩p4(4R↓↓↓↓α↓Q↓↓α↓α#'>Aβ?K&+Iβ3Ns∃βπ&#K↔O~↓αS#*β∪πS
βgS*β'Mβf{π∪↔"β';Sxh)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π##∃↓εC'∨!αβ?K∪/⊃↓U↓ε∪'SMαβ?→β&C∀4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βKπ∨#↔I↓εc';∃αβπ∪∪⊗+OM9α↓αO↔*βS#∀hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓βv+cQ↓ε≠?77∞s⊃55⊗c?]↓ε{K∪↔∩↓β3'v(4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβπ∪∪⊗+OM	ph(4)α↓↓↓↓β)↓↓↓αα3?]ε{K∪↔∩β3';*βπ∪∪⊗+OM↓¬##∃β&S¬β↔KS∃βO→↓β3}∪↔⊃εK;S<hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β&C∃↓βf{]↓β␈∪∪↔Iα↓Q↓β⊗KSM↓ε{→βSF(4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβKπO&+Iβ3Ns∃βπ&#K↔O~q↓α3Ns∃βK∞s∨∀4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β'~β≠K?j↓AβSz↓]M]α↓#?∂&1%9αα3';(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ε∪∪K/≠O↔Mαβ↔S>+↔9↓β9QA↓ε;⊃↓;9\4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β∂π/≠∃↓β/C↔∂W&)↓β∂}k7π;'→↓βSz↓β∀hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓βN;;?K.!9↓↓∧c';∃αβπ∪∪⊗+OO↔~βπ?6(4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓]]]π;KπAεK?Wv!9↓α&yβOC.≠'≠eπ##∀4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β≠O∪OQ↓π#↔cQεc';∃αβπQβ&C∃↓β&{Aβ?0h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π##∃↓π≠∂K↔.q1βW≡)↓β¬αβKπO&+Iβ3Ns∀4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βπ∪'∪K↔O~β?→↓αp4(4R↓↓↓↓α↓Y↓↓α↓α←KO#∃β∪O∪↔∂SgI↓↓↓α↓↓α∪∂#¬β'~β←K''#↔9β&KK↔∂&ce↓β}qβS#(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ε#'O
εQβSF)↓β3}≠πS'}qβCK/3'?W≡cd4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓βO↔"βWAmαβS#∃εc';∃ε∪W≠≠/⊃↓β'~β;?PhQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β/≠↔⊃9α↓αS#*↓β∂?g+79↓ε∪∪K/≠M↓βO_4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβπWS}kπS'≡33eα↓↓↓↓αβ';∂⊗+7↔;&+⊃84R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓α↔F+∂WS/→βπK*β;?Qεs↔∂↔∨≠πKeph(4)α↓↓↓↓β9↓↓↓αα3';*βW≠6+Iβπ&#K↔O~↓α∪π&	↓β'~↓β3?∞#↔⊃↓εK;S=αβS#∃εc';∀hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β↔+≠≠↔∩↓↓βπ&#K↔O~↓↓β?vce9↓α↓αS#O_4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβπ33␈;MβO}k∃↓β}1βS#*↓β3'v)βW63↔H4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β∂}sS↔;'→βS=αβ∃β≡Cπ;∨.!↓βπv!βS#(h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π∪↔OQα↓βK↔&';↔"q↓↓↓ααS#∃α↓β≠'↔≠P4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓β∂#∂∪π∂S/⊃β∪'∨β3πg.!β←'fa↓β*βS#∀hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓β}s∃↓β∨β↔∂'6K↔⊃↓ε∪e↓↓π##∃↓ε≠?3Wnp4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓αβπ∪∪⊗+OM1ε;⊃β&C∃↓βfOQβ≡CπKπ∨#↔H4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓β←Nc1β*βS#∃εcπOQε{;∃↓π≠↔;Qε≠S↔⊂h)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓π##'Mε≠?77∞s⊃84Ph(4(hRS#∃βA7'"β≠W;∨#'?9ε≠?∪∃π∪↔∨'∨#↔I1π;#'∂Bβ'Mβf{π∪↔"βeβ≡{77πv!↓Eβ∞∪?[∃`h+#π~βS#∃ε3?33␈;';≥ε3?K7∂!↓#'v#'[''+π1β⊗KSMβ∂∪∃β↔Gβ3π'v+⊃β.c?]%Ph(4*⊗KQ↓↓α↓↓↓↓α↓E↓↓α↓↓↓↓∩↓↓↓↓α↓↓M↓α↓↓↓↓β!↓↓↓α↓↓↓Uα↓↓↓↓α↓Y↓↓α↓↓↓↓8h)`A@```A@```A@```A@```A@```A@```A@```A@```A@```A@```A@```A@```A@4+qα↓↓↓↓αβq↓↓α↓↓↓βg≠';∨f)βs;␈≠Cπ∂/aIβ←N#∃βqε#πK-αβqβ←⊗KS∃βf;KπCFK∂p4WcW;W≡+⊃βs.sWO↔"βs#↔N;#Qβb↓#π∪"Iβq#/∪πO∃Oaβπ≡Y↓βs.sπ3*βqβ7}#∃↓βb↓D4+a@```A@cp`A@```G````A@`cpA@```ACp``A@``ca@```A@cp`A@```G````A@`cphSq↓↓α↓↓↓βb↓↓↓↓α↓βs∪␈+3∃πaβOC∞≠∃βqα↓↓↓↓αβqβ3N;#Qβf#'OCfgqβ&+cQ↓π`4+s.sWO↔"βsW;/≠↔⊃βfC↔'∨G!βq↓G∪↔A%πaEβ←N#∃βqε∪π∂-αβs∪'⊗+∂Qβbβ7?∪*↓βq↓h+p`A@```G````A@`cpA@```|__0`001x`0000`1x00`0001p0000`01x0`0000ax~∀@@@@@@@@@@@@Ap@@@@@@@@@@@@@@@@@@Ax@@@@@@@@@@@@@@@@@Ax~(~∀@@A¬∪)L@@A∨
)β_@@@@@@A≠¬≥∪≥∞4∀~∀@@@`tD@@@@L``@@@@@@@@A+9kgKH8~∀~∀@@@d@@@@`h`@@@@@@@@AMS]OY∀AQKS≥Qh←I=kEYJ↓QKSO!h\@@!)Kqh↓[←IJ4∀@@@@@@@@@@@@@@@@@@@A←]Yd\R~∀@@@@@@@@@@@@@@@@@@@AQQSf@AESh@AIKQKe[S9Kf@@AoQCP@@AQ∃SOQh4∀@@@@@@@@@@@@@@@@@@@AISgAYCsK⊂AGQCICGiKIfAoS1X@AQ¬mJ\@↓'S]O1J~∀@@@@@@@@@@@@@@@@@@@AQ∃SOQhAGQCICGiKIfACe∀@@zbH@AYS9KfAi¬YXv~(@@@@@@@@@@@@@@@@@@@@zb`A1S]KfACE←YJAiQ∀@@EE¬gJDA1S]J@↓C]H@H~∀@@@@@@@@@@@@@@@@@@@AYS9Kf@A	KY←n8@@A)!J@Ai=`@AY%]J@@↓←L@AQQJ~∀@@@@@@@@@@@@@@@@@@@A
QCeC
iKdAAeS]iLA←\AQQJ@A1S]JA¬IIeKMgKH\4∀@@@@@@@@@@@@@@@@@@@A)QSLAESh↓QCfA9↑AKM→KGhA%\AOe¬aQSGLA[←I∀\~∀@@@@@@@@@@@@@@@@@@@A∪_@As←T@ACe∀@@AI%gaYCeS]N@↓I←kE1J[QK%OQh~(@@@@@@@@@@@@@@@@@@@@↓iKqh0@AiQ∃\@AK¬GPAY%]J@AMQ←kY⊂@AEJ↓K]IK⊂~∀@@@@@@@@@@@@@@@@@@@AoSQPABA
CeeS¬OJAe∃ike\↓C]HAQ/≡AY%]KMK∃If~∀@@@@@@@@@@@@@@@@@@@A%\@A←IIKd@↓M←d@↓gkEg∃ckK]P@AYS9Kf@AQ↑AEJ4∀@@@@@@@@@@@@@@@@@@@Aa←g%iS←]∃HAae=aKeYd\~∀~(@@@@L@@@@@`d`@@@@@@@@↓≥←ga¬GJ←gACGJ\@Q)KahA[←⊃JA←]1r\R~(@@@@@@@@@@@@@@@@@@@@↓/QK\AiQSL@AESP@ASfA←\XAKCG AGQCICGiKH~∀@@@@@@@@@@@@@@@@@@@Aoe%iiK\ASf@↓gkEgQSiki∃HA←\Ai←`A←LAQQJ~∀@@@@@@@@@@@@@@@@@@@A
QCeC
iKdAAeKmS=kgYr↓oeSiQK\v@↓oQK\↓iQSf4∀@@@@@@@@@@@@@@@@@@@AESh↓SfA←→LXAi!JAeK5CS]I∃dA←L↓iQJA1S]JA%f~∀@@@@@@@@@@@@@@@@@@@AKICgKH8~∀~∀@@@f@@@@`d`@@@@@@@@A¬IISi%mJ←e∃aYCG∃[K]h8@@@@!∂eCa!SGf@↓[←IJ4∀@@@@@@@@@@@@@@@@@@@A←]Yd\R~∀@@@@@@@@@@@@@@@@@@@A]QK\@↓iQSf↓ESh@↓SfA←8X@A←9Yr@bAESiLACeJ4∀@@@@@@@@@@@@@@@@@@@AoeSQiK\XA∨%K⊂@AoSQP@Ai!J@AE%if@A¬YeKC⊃r~∀@@@@@@@@@@@@@@@@@@@AoISiiK8vAoQ∃\AiQ%f@AE%hASf↓←MLX@bOf↓C]H~(@@@@@@@@@@@@@@@@@@@@`OfA¬eJAoISiiK8A←mKHAaeKYS←kf↓ICiB8~∀@@@@@@@@@@@@@@@@@@@AπβU)∪∨≤hA/QK8AeKa1CGS]≤XAiQ∀AESiLAChAQQJ~∀@@@@@@@@@@@@@@@@@@@A	KOS]9S]N@↓C]HA∃]H@A=LAiQ∀@AYS9JAgK≥[K]h4∀@@@@@@@@@@@@@@@@@@@As←j↓CeJ@↓oeSi%]NAg!←kYHAEJAQQJ@AMC[JA¬f~∀@@@@@@@@@@@@@@@@@@@Ai!J@AaIKmS←Uf@AI¬iBA←H@AESP@AY←MgCOJ↓[Cr~(@@@@@@@@@@@@@@@@@@@@↓←GGkH\~∀~(@@@@P@@@@@`b`@@@@@@@@↓	←kE1J@Ao%IiP←MS]OY∀AoSIQP\@@Q)KqPA[←I∀~∀@@@@@@@@@@@@@@@@@@@A←]1r\R~(@@@@@@@@@@@@@@@@@@@@↓)QSf↓EShA⊃KiKe5S]Kf↓oQCh↓oSIi AISgAYCsK⊂~∀@@@@@@@@@@@@@@@@@@@AGQ¬eCGi∃efAo%YXAQ¬mJ\@↓/SiP↓iQSf↓EShA=\X~∀@@@@@@@@@@@@@@@@@@@A
QCeC
iKef↓CeJ@tb`AE%ifAo%IJAo%iP@AQo↑@`4∀@@@@@@@@@@@@@@@@@@@AESiLA←\AQQJ@A∃]H@QQ←iCXzbd@↓ESif$vAoQ∃\~∀@@@@@@@@@@@@@@@@@@@Ai!SfAE%hASfA←ML0AGQCICGiKIfACe∀@@jA	Sif~(@@@@@@@@@@@@@@@@@@@@↓oSIJ↓oSiP↓←]J@@AESh↓←\Ai!JAK]⊂@@Qi=iCX@X~∀@@@@@@@@@@@@@@@@@@@AESQfR\~(@@@@@@@@@@@@@@@@@@@@↓πβ+)%∨≤t@A/QK8@@AkMS]N@AI←k	YJ@@↓oSIi ~∀@@@@@@@@@@@@@@@@@@@AGQ¬eCGi∃efXA⊃↑A]←PAKqG∃KH@zPfAGQ¬eCGi∃ef~∀@@@@@@@@@@@@@@@@@@@A%\ABA1S]J@↓←dAi!JAG←9ie←Y1Kd@A]SYXA!C]N\4∀@@@@@@@@@@@@@@@@@@@A	←k	YJ@A]SIiP↓GQCe¬GiKeL@A←MQK\@A→CSXAQ↑~∀@@@@@@@@@@@@@@@@@@@AO∃hAISMaYCs∃HAG←IeKGi1rAC]eoCr\4∀~∀@@@h@@@@@@b`@@@@@@@@AICgJ←9↑AKe¬gJ\@Q∂eCAQSGf↓[←IJ↓←]Yr8R~∀@@@@@@@@@@@@@@@@@@@A∪_AiQSL@AESPAC]HAiQJ↓OeCa!SGf@↓[←IJ↓ESh~(@@@@@@@@@@@@@@@@@@@@↓CeJA=\XAB↓GQC]9KXAg∃YKGh↓oSYXAGCkMJAiQ∀~∀@@@@@@@@@@@@@@@@@@@AgGIKK\@↓i↑AE∀@AKe¬gKHAQ↑@Ai!JAEC
WOe←U]H~∀@@@@@@@@@@@@@@@@@@@A%]ISG¬iKHA	rAiQ∀AICe,←YSO!hAESPAEKY=n\~∀4∀@@@j@@@@@``P@@@@@@@@A	Ce,←YSO!h\~∀@@@@@@@@@@@@@@@@@@@A]QK\AQQSfA	ShASLA←\X↓C\AKICgJA
CkgKLAiQJ4∀@@@@@@@@@@@@@@@@@@@AgGe∃K\@AQ↑@AO<AICe,@AC]⊂@AGQ¬eCGi∃efAC9H~∀@@@@@@@@@@@@@@@@@@@AOICaQS@b@A	SifA¬eJAI%gaYCeKH@A¬fAYS≥Qh\~(@@@@@@@@@@@@@@@@@@@@↓/QK\↓iQSf↓EShA%fA←M_XAC\↓KeCg∀A[CW∃fAiQ∀~∀@@@@@@@@@@@@@@@@@@@AEC
WOe←U]H@A1SOQhAC]H@AGQ¬eCGi∃ef@A¬]H~∀@@@@@@@@@@@@@@@@@@@A≥eCaQ%F@bA	SifA¬eJAI%gaYCeKHACLAICe,\~∀~(@@@@X@@@@@``d@@@@@@@@↓/eSi∀←ISgAYCrA⊃SeKGQYr\~(@@@@@@@@@@@@@@@@@@@@↓/QK\↓iQSfAESh↓Sf@A=\XA←AKeCi%←]f@↓O↑Ai<~∀@@@@@@@@@@@@@@@@@@@AiQ∀AISg@Q]←I[CXA5←IJR8@A/Q∃\@A←→LXAI¬iB~∀@@@@@@@@@@@@@@@@@@@A%f@AI%gaYCeKH@@↓←]GJA←\@AiQJAgKY∃GiKH4∀@@@@@@@@@@@@@@@@@@@AGQC9]KXA¬]HAi!K\AO=KfAC]Cr@A¬]HAaIKmS←Uf~∀@@@@@@@@@@@@@@@@@@@AI¬iBAe∃[CS]LA←\AQQJAI%gF\~(~∀@@@n@@@@@`@b@@@@@@@@A∂e¬aQSGLA[←I∀←iKqPA[←I∀\~∀@@@@@@@@@@@@@@@@@@@A/!K\Ai!SfAE%hASf↓←\XAe←jACIJAS\↓OeCa!SGf~(@@@@@@@@@@@@@@@@@@@@↓[←IJlAoQK8@ASh↓SfA←→LX@Ae←jACIJ@AS8AiKqP~∀@@@@@@@@@@@@@@@@@@@A[←⊃J\~∀_@@@@@@@@@@@@@@@@@@@↓'π)%∨≤@bTZ[1¬≠!→L~∀~∀4∃)QSL@AgK
iS←\↓aeKg∃]if@↓g←[J↓KqC[AYKf@↓←LAkMCOJ@↓←LA+U∨f\@A)QKIJACe∀~∃Kq¬[aYJAae←≥eC[f↓iQChAI↑@↓MSYJ↓∩←≡XAek\↓ISga1Cr@AAe←Oe¬[f@A¬]HAkMJ~∃S9iKeeUaif\@AβY0@A←L↓iQJ@↓KqC[AYKf@↓CeJA]eSii∃\@AS8@A
β%_v@A9←iJAQQJ~∃
←[[K9ifACAaKCe%]NAC1←]Og%IJAi!JAG←⊃J\~∀_@@@@@@@@@@@@@@@@bj\D@Aq¬[aYJ↓←LA∂∃]KeC0A∩←≡4∀~∀~)⊃KeJ↓SfAB↓ae←OICZAi!ChAG=aSKf↓BAiKahAMS1JAGC1YKHA→∨≡AS9i↑ABA]Kn↓MSYJ4∃GCY1KHA∂¬%!→29)≠ @!G←as%]NASLAI←]∀AGQCICGiKHAErA
QCeC
iKdR8~∀~∀@@@@@A)∪Q→
@@↓1β≠A→
A∨_A∂≥∃%β_A$←≡~∀4∃π⊃%|b@@@mβεAi<AQ←Y⊂AGQCICGiKHAEKS9NAG←ASKHA%]i↑A9KnAM%YJ~∃A>bn@@@wβAM←d↓akgQ⊃←o\AA←S]i∃d~∀~)∪π?>@@@@w
QC]]∃XA]k5EKdAUgKHA→←dAS9akh~)∨π?>D@@@w
QC]]∃XA]k5EKdAUgKHA→←dA←Uiakh4∀~∃∪=)'(hA%'∃(@@@@@@@@@@@@@@@@@@@@@@w≥←←HAQQS]N↓i↑AgQCehA]SiP\4∀@@@@@@A5∨-
@@A Ym∪∨/λ↓→!	_1!	→:@@@@@w'KPAk`AAkgQI=o\Aa=S]iKH\~∀~(@@@@@@A∪9∪(@@A∪εX@@@@@@@@w%]SiS¬YSuJ↓IKmS
JA	',A←\A
QC]]∃XA∪ε4∀@@@@@@AM∪1¬∪P@@←	M⊗↑@@@@@@lAS\A5←IJ@@AoSi AS]aUhAEk→MKd~(@@@@@@A∪	+@@@@@@@@@@@@@v↓QKCI∃dACh↓∪¬+8~∀@@@@@@↓⊃β→(@@@\@@@@@@@@w∪[a=ggSE1JAKeI←dtA
C\Oh↓∪≥∪(↓iQJA⊃'⊗\~(~∀@@@@@@↓')54@@A∪9β≠
VL@@@@wπYK¬dAiQ∀A!!≤↓o←eH↓←LA→=∨↔+ ↓EY←G,Z[kg∀~∀@@@@@@@@@@@@@@@@@@@@@@vAGkIeK]h↓	∪'⊗↓!!≤@!β→∪βLRAM←HA←YH↓MSYJ8~∀@@@@@@@@@@@@@@@@@@@@@@vA)Q%fAo←IHASf↓GY←E	KeKH↓ErA→=∨↔+!L\~∀@@@@@A→∨∨-+ @A%εY∪≥¬≠
@@@w∨a∃\AMS1JA
∨<AM←d↓eKCI%]N\~(@@@@@@A∃I'(@@A≥∨→=∨⊗@@@@@w1∨∨↔+@AMCS1KHZ[→S]HA=khAo!r\~∀4∀@@@@@@A%≥∪(@@A∨ε0`@@@@@@@m∪]Si%CYSu∀AIKm%GJA	M⊗A←\↓GQC]9KXA∨~∀@@@@@@↓'∪1¬%(@@←⊃'⊗↑@@@@@vAS\↓[←IJ`AoSQPA←kQakhA	kMMKH~∀@@@@@@↓∨¬+0X`@@@@@@@@@@vAQK¬IKdA¬hA∨¬U\~∀@@@@@A⊃βT    .           ;HALT on failure.

        SETZM   ONAME+3     ;Clear the PPN word of ENTER block--use
                            ; current DISK PPN (ALIAS) for new file.
        SETZM   ONAME+2     ;Set protection to 000, use current
                            ; date/time for date/time file written.
        ENTER   OC,ONAME    ;Open file GARPLY.TMP for output.
        JRST    NOENTR      ;ENTER failed--find out why.

LOOP:   PUSHJ   P,GETCH         ;Get a character from input file.
        JRST    DONE            ;End-of-file return from GETCH.
        PUSHJ   P,PUTCH         ;Put character into output file.
        JRST    LOOP            ;Loop until EOF.

DONE:   RELEAS  OC,             ;Close output file and release DSK.
        RELEAS  IC,             ;Close input file and release DSK.
        EXIT                    ;Return to monitor level.

NOLOOK: OUTSTR  [ASCIZ /
LOOKUP FAILED -- /]
        HRRZ    CHR,INAME+1     ;Get LOOKUP error code.
        CAILE   CHR,ERRMAX      ;Make sure error code is reasonable.
        MOVEI   CHR,ERRMAX      ;Unreasonable code.
        OUTSTR  @ERROR(CHR)     ;Type appropriate error message.
        HALT    .

NOENTR: OUTSTR  [ASCIZ /
ENTER FAILED -- /]
        HRRZ    CHR,ONAME+1     ;Get ENTER error code.
        CAILE   CHR,ERRMAX      ;Make sure error code is reasonable.
        MOVEI   CHR,ERRMAX      ;Unreasonable code.
        OUTSTR  @ERROR(CHR)     ;Type appropriate error message.
        HALT    .

GETCH:  SOSG    IBUF+2  ;Decrement character count for input buffer.
        IN      IC,     ;No more in current buffer.  Read some more.
        JRST    GETCH1  ;Go get a character out of input buffer.

        STATZ   IC,20000        ;IN failed.  Have we hit end of file?
        POPJ    P,              ;Yes.  Take direct return.
        OUTSTR  [ASCIZ /
INPUT FILE ERROR.
/]                              ;No.  Type error message.
        HALT    .               ;HALT on some input error.

GETCH1: ILDB    CHR,IBUF+1      ;Get a character out of input buffer.
        AOS     (P)             ;Take skip return from GETCH with
        POPJ    P,              ; new character.

PUTCH:  SOSG    OBUF+2  ;Decrement character count for output buffer.
        OUT     OC,     ;No room.  Do output and get fresh buffer.
        JRST    PUTCH1  ;Go put character into output buffer.
        OUTSTR  [ASCIZ /
OUTPUT FILE ERROR.
/]                      ;OUT UUO failed--type error message.
        HALT    .       ;HALT on any output error.

PUTCH1: IDPB    CHR,OBUF+1      ;Put character into output buffer.
        POPJ    P,              ;Return from PUTCH.

OBUF:   BLOCK   3       ;Output buffer header
IBUF:   BLOCK   3       ;Input buffer header
INAME:  SIXBIT  /FOO/   ;Block used for LOOKUP: file name of FOO.
        BLOCK   3       ; No extension, space for date and PPN words.
ONAME:  SIXBIT  /GARPLY/;Block used for ENTER: file name of GARPLY,
        SIXBIT  /TMP/   ; extension of TMP.
        BLOCK   2       ; Space for date word and PPN word.

LPDL←←10                        ;Length of pushdown list
PDL:    BLOCK   LPDL            ;Block for pushdown list

ERROR:  [ASCIZ /NO SUCH FILE.
/]
        [ASCIZ /ILLEGAL PPN.
/]
        [ASCIZ /PROTECTION FAILURE.
/]
        [ASCIZ /FILE BUSY.
/]
ERRMAX←←.-ERROR
        [ASCIZ /HOORRIIBBLEL ERRO RNBR 87.
/]                              ;impossible error

        END     IOTEST          ;End of program, starting address.
                15.2  Example of Display Programming


Here is a simple program to display some (fixed) text on either a III
or a Data Disc.  This program also positions the page printer  at the
bottom of the screen and draws a vector across the screen  just above
the page printer.

        TITLE   DISPLAY PROGRAMMING EXAMPLE

A←1
L←2     ;AC used to hold TTY line characteristics

DDDLIN←←20000           ;Data Disc bit in line characteristics.
IIILIN←←400000          ;III bit in line characteristics.

; Data-Disc macros and definitions
; Command word -- alternating commands and parameters:
DEFINE CW(C1,B1,C2,B2,C3,B3) <
        <BYTE (8)<B1>,<B2>,<B3> (3)<C1>,<C2>,<C3>>!4
>

; Command names for DD command bytes
EXCT←←0                         ;Execute
FNCN←←1  ALPHBG←←6  ALPHA←←46   ;Function, usual value bytes
CHNL←←2                         ;Channel select
COLM←←3                         ;Column select
HILIN←←4                        ;Set high 5 bits of line address
LOLIN←←5                        ;Set low 4 bits of line address

DISPLA: RESET           ;A good practice is to start with a RESET.
        SETO    L,      ;Get TTY's line characteristics to find out
        GETLIN  L       ; if TTY is a III or a Data Disc.
        AOJE    L,FINISH        ;Jump if job is detached (no TTY).
        TLNN    L,DDDLIN!IIILIN
        JRST    NOTDPY          ;Jump if TTY is not a display.

        PPSEL   1               ;Select new piece of paper, and
        DPYPOS  -500            ; position near bottom of screen with
        DPYSIZ  3002            ; 3 glitches and 2 lines per glitch.

        JUMPL   L,DOIII         ;Jump if III (sign bit is IIILIN)
        DDUPG   [[CW FNCN,17,CHNL,0,FNCN,ALPHA↔0]↔2]
                        ;Erase DD screen first.
        MOVE    A,[CW FNCN,ALPHA,CHNL,0,FNCN,ALPHA]
                        ;DD command word to do channel select
                        ; and set up function register for text.
        MOVEM   A,DPPROG        ;Put into display program.

        SKIPA   A,[CW COLM,2,HILIN,2,LOLIN,4]
                        ;DD command word to do column/line selects.
DOIII:  MOVE    A,[BYTE (11)<-777>,640 (3)2,3 (2)1,2 (4)6]
                        ;III long vector word to draw an invisible
                        ; absolute vector to the upper left corner
                        ; of the screen, and select brightness
                        ; of 2, size of 3.
        MOVEM   A,DPPROG+1      ;Store in display program.

        UPGIOT  1,DPHEAD        ;Run display program (on piece of
                                ; glass number 1 if III).

        JUMPL   L,DOIII2        ;Jump if III.
        UPGIOT  DDDHDR          ;Draw line across DD screen.
        JRST    FINISH

DOIII2: UPGIOT  2,IIIHDR        ;Draw vector on III, using POG # 2.

FINISH: EXIT    1,              ;Done.  Don't do normal EXIT which
                                ; would RESET the display.
        EXIT                    ;In case user types CONTINUE.

NOTDPY: OUTSTR  [ASCIZ /
This program only works on displays./]
        EXIT

DPHEAD: 200000,,DPPROG  ;Double-field mode bit,,address of disp prog
        DPLEN           ;Length of display program
        0
        DPPROG+1        ;Address of low order line select in DD prog

DPPROG: BLOCK   2       ;Space for command and position words.
        ASCID   /This is the text to be displayed on the first line.
And this is the text for the second line.

Note: The ASCID statement turns on the low order bit in each word
generated, thus causing such words to be taken as text words when
they appear in a display program for either III or DD.

Note: For DD, the last line of text must have a CRLF at its end, or
the display program must end with an execute; otherwise the last line
of text will not be displayed.

This is the last text line that will be displayed.
/
        0       ;For DD, a HALT (zero) must end the program, or the
                ; system will zero the last word of the program.
                ; Zero also stops (but is unnecessary in) a III prog.

DPLEN←←.-DPPROG ;Length of display program.

DDDHDR: DDDVEC  ;Address of DD display program to draw line.
        LDDVEC  ;Length of display program.

DDDVEC: CW FNCN,27,CHNL,0,FNCN,27       ;Graphics mode, own channel.
        CW COLM,1,HILIN,27,LOLIN,0      ;Column 1, Line 560 (2*270).
REPEAT =13,<
        BYTE (8)377,377,377,377 (4)2    ;Graphics word, all bits on.
>               ;Draw a horizontal line =52 graphics bytes long.
        CW EXCT,0,FNCN,27,FNCN,27       ;Execute to write out line.
        0       ;End of DD program to draw a line.
LDDVEC←←.-DDDVEC


IIIHDR: IIIVEC  ;Address of III display program to draw vector.
        LIIVEC  ;Length of display program.

IIIVEC: 0       ;All III programs must start with unused word.
        BYTE (11)<-777>,<-400> (3)2,3 (2)1,2 (4)6
        ;Draw invisible absolute vector to left margin near bottom.
        BYTE (11)  1777,0      (3)2,3 (2)0,0 (4)6
        ;Draw visible relative vector to right margin.
LIIVEC←←.-IIIVEC        ;Length of program to draw III vector.

        END     DISPLA
                  15.3  Example of Using Interrupts


Here is a sample program that enables interrupts on the typing of ESC
I and on the receiving of a letter through the inter-job  mail system
(see Section 7).

        TITLE   INTERRUPT EXAMPLE

A←1

INTMAIL←←4000   ;Interrupt bit for letter received.
INTTTI←←4       ;Interrupt bit for ESC I typed

INTSAM: RESET                   ;A good beginning.
                ;Note that RESET clears all interrupt enablings.

        MOVEI   A,INTRPT        ;Set up address of routine to
        MOVEM   A,JOBAPR↑       ; handle interrupts.
                ;The symbol JOBAPR is EXTERNed by the ↑.

        SETZM   ESCIFG          ;Initialize ESC I flag.
        MOVSI   A,INTMAIL!INTTTI;Interrupt bits we want to enable.
        INTENB  A,              ;Enable interrupts for these bits.

        <here is main program>  ;Occasionally the main program will
        ...                     ; test ESCIFG and clear it and take
                                ; appropriate action if it is set.
        EXIT                    ;End of main program.

INTRPT: MOVS    A,JOBCNI↑       ;Get bit which is cause of interrupt.
        CAIN    A,INTMAIL       ;Did we get a letter?
        JRST    DOMAIL          ;Yes.  Go process it.
        CAIN    A,INTTTI        ;Did user type ESC I? (He must have.)
        SETOM   ESCIFG          ;Set flag to tell user-level process
                                ; that ESC I has been typed.
        DISMIS                  ;Dismiss the interrupt.

DOMAIL: SRCV    LETTER          ;Skip and read letter if one there.
        DISMIS                  ;No letter (can't happen).  Go home.
        MOVE    A,LETTER        ;Get first word of letter.
        CAME    A,CODE          ;See if letter has right format.
        DISMIS                  ;Wrong format.  Someone unknown
                                ; has sent us a letter--ignore it.

        <process letter here>   ;Interrupt-level process must not
        ...                     ; go into wait state or take more
                                ; than 8 ticks (8/60s sec) to finish.
        DISMIS                  ;Dismiss the interrupt.

LETTER: BLOCK   =32             ;Block for holding received letter.
CODE:   SIXBIT  /INTSAM/        ;Some special code to ensure we
                                ; process only reasonable letters.

ESCIFG: 0                       ;Flag indicating if ESC I was typed.

        END     INTSAM
          APPENDIX 1--GENERAL INFORMATION ABOUT THE PDP-10


The  PDP-10  is  a  36-bit  word,  single  address  machine.   Normal
instructions (excluding I/O instructions) take the following form.

    BITS   OCTAL         MEANINGS  OF  FIELDS  IN  AN INSTRUCTION
                         WORD

    0:8    777000,,0     Instruction code.
    9:12   740,,0        Accumulator.
    13     20,,0         Indirect bit.
    14:17  17,,0         Index register if non-zero.
    18:35  0,,777777     Memory address.

For I/O instructions, the following format is used:

    BITS   OCTAL         MEANINGS OF FIELDS IN I/O INSTRUCTIONS

    0:2    700000,,0     This field is a 7 in all I/O instructions.
    3:9    77400,,0      Code of I/O device.
    10:12  340,,0        I/O instruction code.
    13:35  37,,777777    Same as in normal instructions.

Machine  I/O instructions  are generally  privileged in  that opcodes
corresponding to these instructions trap to the monitor when given by
a user-mode  program unless  the program is  in IOT-USER  mode.  User
programs are not usually run  in IOT-USER mode and must  do something
special to get into this mode.  See the description of  IOT-USER mode
below on page 361.



For every  instruction, an effective  address calculation  is carried
out in the following manner using bits 13:35 of the  instruction.  If
the index register  field (bits 14:17)  is non-zero, the  contents of
the specified index register are added to the memory address found in
bits 18:35 of the instruction.  Then if the indirect bit (bit  13) is
0, this result is the effective address for the instruction.   If the
indirect bit is 1, then  another word is picked up from  the location
specified  by  the  result  so  far.   Then  the   effective  address
calculation  starts over  using bits  13:35 of  this new  word.  This
process continues until  the indirect bit in  some word used  in this
calculation is 0; the  address (including any indexing)  specified by
that word is then the effective address of the instruction.
                              PC Flags


The PDP-10 has several flags  that indicate the state of  the program
running.  These flags are commonly called the PC flags  because their
values are  stored in  the left  half of  the PC  word stor↓KH@↓ErAi!J~∃!U'⊃∀X↓∃'$@↓C]HA)' @A%]gieUGiS←9f\@AQQJ@AAεASiMKYL@↓SfAgQ←eKHAS\AQQJ~∃ISOQh↓QCYL↓←L@AQQSfAAεAo←IH\@AQQJ@A	ShAa=gSiS=]fAC9HA[K¬]S]OL@A←L↓iQJ~)MYCOL@ACe∀@AKqAYCS]∃H@AE∃Y←n\A
←dAMkeQQKd@↓IKiC%XX@AMKJ@AQQJA!⊃ Zb`4∃S]gQekGi%←\A[¬]kCYL\~∀~)≥←iJ↓iQChAiQKIJACe∀A]↑@↓MYCOLAS\A	Sif@bftb\vAiQ∃gJAE%if@A¬eJAC1oCsf4∃gi←IKHACLAuKe<AS\AQQJA!@Ao←IHAg↑↓iQCh↓oQK\↓iQJAAεAo←IH@ASLACIIIKggK⊂~∃S]⊃SeKGQYrA]∃SiQKHAS]I∃qS]N↓]←dA→keiQ∃dAS]⊃SeKGQS]NA]SYXAQCWJAAYCGJ8~∀~∀@@A¬%)&@@↓∨π)β0@@@@@@@A5β≥∪9∂&A∨_A
→β≥&A∪≤↓)⊃
AAεA/∨Iλ~∀~(@@@@@@@@@@h``@``XX@@@@@↓∨mKe→Y←n\@Aβ\↓CeSi![KiS@A←a∃eCiS=\AQCL~∀@@@@@@@@@@@@@@@@@@@AeKMkYiK⊂AS\A¬\AS]
←eeK
h@Ae∃gkYh↓EKGCUgJ~∀@@@@@@@@@@@@@@@@@@@A=LAg←5JAWS9HA←L↓←mKe→Y←n\4∀~∀@@@b@@@@@H````@XX`@@@Aπ¬eer@`\@A¬\@ACISiQ[∃iSF@↓←aKe¬iS←\↓QCf~(@@@@@@@@@@@@@@@@@@@@↓GCkg∃HABA
Ceer↓←khA=LAESP@`\@A)QSLAI←KL~∀@@@@@@@@@@@@@@@@@@@A]←P@A]K
KggCISYr@↓S]IS
CiJ@↓C\@A=mKeM1←n~∀@@@@@@@@@@@@@@@@@@@A
←]ISQS←\\4∀~∀@@@d@@@@@D````@XX`@@@Aπ¬eer@b\@A¬\@ACISiQ[∃iSF@↓←aKe¬iS←\↓QCf~(@@@@@@@@@@@@@@@@@@@@↓GCkg∃HABA
Ceer↓←khA=LAESP@b\@A)QSLACYg<~∀@@@@@@@@@@@@@@@@@@@AI←∃f@@A9←h@@↓]KGKMgCeS1r@@A%]ISG¬iJ@@↓C\~∀@@@@@@@@@@@@@@@@@@@A=mKeM1←nAG=]ISi%←\\~(~∀@@@f@@@@@h@```X0`@@@@A
Y=CiS]≤@A←m∃eMY←\\@@A∧@AMY=CiS]≤@Aa←%]h~∀@@@@@@@@@@@@@@@@@@@A%]gieUGiS←8AQCf↓eKgk1iKHA%\AC\↓S]G←IeKGh4∀@@@@@@@@@@@@@@@@@@@AeKgUYhAE∃GCkg∀A←LAM←[JA-S]H@↓←LA←YKeMY=n~∀@@@@@@@@@@@@@@@@@@@A←HAk]I∃eMY←\\~∀~(@@@@P@@@@@d``@`XX`@@@@↓¬siJ5S]Ge∃[K]hAgkaAeKgg%←\\@A)QJA]KqP~∀@@@@@@@@@@@@@@@@@@@A∪→⊃∧@@A=d@A∪⊃!∧@@↓S]giIkGiS=\@@A]SYX@↓EJ~∀@@@@@@@@@@@@@@@@@@@A∃qKGkQKH@A]SiQ←UhAS]
eK[K9iS]NAiQJ↓EsiJ4∀@@@@@@@@@@@@@@@@@@@Aa←S9iKd\A)QSLAMYC≤ASfAMKhAo!K\@A¬\A∪→⊃∧~∀@@@@@@@@@@@@@@@@@@@A←HA∪	!λAS]gQekGi%←\ASLAS]i∃eekaQKHAC→iKd~(@@@@@@@@@@@@@@@@@@@@↓iQJ@↓EsiJ↓a←S]QKd@A!Cf@A	KK\A%]GeK5K]iK⊂~∀@@@@@@@@@@@@@@@@@@@AEkP@AEK→←eJ@↓iQJ@↓EsiJAQCfAEKK8A[←m∃H\~∀@@@@@@@@@@@@@@@@@@@AQQSf@↓MYCN↓GC\@↓CYg↑AEJAMKh@A	r@AB↓kgKd4∀@@@@@@@@@@@@@@@@@@@Aae←≥eCZA]SiPAQQJ@E)%'(@HXDAS9giek
iS←\8~∀~∀@@@j@@@@b```@XX`@@@@AUgKd@↓[←IJ8@@A)!JAae=GKgg=d@ASL@AS\↓kgKd4∀@@@@@@@@@@@@@@@@@@@A[←I∀\~∀~(@@@@X@@@@@h``@XX`@@@@@↓+gKdAS\[=kh\@@A)Q∀@Aae=GKgg=d@@A%f@AS8~∀@@@@@@@@@@@@@@@@@@@A∪∨P[+'HA[←I∀\@@AQQSfA5←IJ@↓SfAKaaYCS9KH~∀@@@@@@@@@@@@@@@@@@@A	KY←n8~∀~∀@@@bD@@@@b``X0`@@@@@@A→Y←Ci%]NAk9IKeM1←n\@↓)QJA∃qa←]∃]hA←_AiQJ4∀@@@@@@@@@@@@@@@@@@@AeKgUYhA←_ABAM1←CiS9NAa←%]hA←AKeCi%←\Ao¬f~∀@@@@@@@@@@@@@@@@@@@AY∃gfAi!C\@ZDdp@Q⊃KGS[¬XR\~(~∀@@@bd@@@@h@XX`@@@@@@A≥↑↓ISmS⊃J\@A∧AISm%gS←\↓←aKe¬iS←\↓oCfA9←h~∀@@@@@@@@@@@@@@@@@@@A
CeeS∃HA←kP@AEK
CkgJ↓KSiQ∃d@Ai!JAISYSg←d4∀@@@@@@@@@@@@@@@@@@@AoCfAuKe<@A←dAC\@↓←mKe→Y←n@↓o←kY⊂@AQCYJ~∀@@@@@@@@@@@@@@@@@@@Ae∃gkYi∃H\~∀_@@@@@@@@@@@@@@@@@@@@@@A%∨([+M$A≠=IJ~∀4∀~∃∨8@AiQ∀@A!	@Zb`X↓kgkC1Yr@A=]Yr@↓iQJ@↓[←]SQ←dASL@ACY1←oKHAi↑@↓kgJAQQJ~∃5CGQS9JOfA$←≡AS9giek
iS←]L\@A∪8AkgKHAae←≥eC[f0AiQJA←aG=IKf@ n``t\nnR~)←L@AQQKgJ↓S]giIkGiS=]f@A¬eJ@AUgkCY1rAS]QKeae∃iKH@↓Cf@AU+∨f\A⊃←o∃mKdX4∃iQKIJAKq%gifA∧AgaK
SCXAUgKdA5←IJX↓GCYY∃HA∪∨P[+'HA[←I∀XAS\AoQS
PAiQ∀~∃←a
←IKf@n``hnnn@↓CeJ@↓KqKGUiKH@↓]←h@↓Cf@AU+∨f@↓Ekh@↓Cf@A5CGQS9J@A∩=≡~∃S9giek
iS←]L\~∀~)αAkg∃d@AaI←OeC4AGC\↓OKh@↓S]i↑↓∪∨([U'$A5←IJ@↓ErAO%mS]N↓iQJ@↓∪∨)4A++≡4∀QgK∀AaCO∀@dld$XAoQ%GPAI=KfA]=iQS]≤AEkh↓akhAe←jAS9i↑Ai!SfA[=IJ\@↓βYg↑0~∃C\↓S]iKIekah5YKmK0Aae←
KgfA]SYXA	JAgi¬eiKH↓k`AS8A∪∨(5+'$A[←I after
a new-style interrupt if bit 6 (the 4000,,0 bit) is on in JOBAPR; see
Section  9.  Finally,  spacewar processes  are always  started  up in
IOT-USER mode; see Section 8.

The  simplest method  for getting  out of  IOT-USER mode,  whether at
user, spacewar or interrupt level, is to execute a

        JRST 2,@[.+1]

This turns off all of  the PC flags, except the user-mode  flag.  See
the JRST instruction  in the PDP-10 manuals  and note that  DEC calls
IOT-USER mode "user in-out".

In summary, opcodes  700:777 are treated  as UUOs unless  the program
executing such instructions is in IOT-USER mode, in which  case these
opcodes are machine I/O instructions.
                        Text Representations


There are several common representations used for storing text on the
PDP-10.  These include  ASCII, ASCIZ, ASCID  and SIXBIT.  In  each of
these four representations, characters are stored left-justified in a
block of  one or more  words.  The octal  codes for ascii  and sixbit
characters are given in Appendix 6.

    ASCII     In this representation 7-bit characters  are packed
              5 to  a word  with the low  order bit  (bit 35--the
              0,,1  bit)  always  being zero.   A  word  count or
              character count is  needed to determine  the length
              of an ASCII string.

    ASCIZ     This is the same as ASCII except that a null (zero)
              byte follows  the last character  in the  string to
              mark its end.

    ASCID     This is the same as ASCII except that the low order
              bit of each word is always a one.

    SIXBIT    This representation packs  6-bit characters 6  to a
              word.  The  characters representable in  SIXBIT are
              those with ascii representations from 40 to 137.
             Assembler Features Relevant to this Manual


Here is an abbreviated  list of PDP-10 assembler  features, including
those used in the UUO writeups in this manual.

1. The form "[...]" is a literal whose value is the address  at which
the code  and/or data specified  by "..." is  placed in  the program.
The code/data  can consist  of any  number of  words and  can include
other literals.

2. The form  "A,,B" represents  a word whose  left half  contains the
value  A  and  whose  right  half  contains  the  value  B.   This is
equivalent to the form "XWD A,B".

3. The form "IOWD A,B" is exactly equivalent to the form "-A,,B-1".

4. The   forms   "ASCII /.../",   "ASCIZ /.../",   "ASCID /.../"  and
"SIXBIT /.../" represent blocks of words containing the  string "..."
in the ASCII,  ASCIZ, ASCID and SIXBIT  representations respectively.
See these representations above.
                     APPENDIX 2--JOB DATA AREA


The first 140  words of each core  image are reserved for  storage of
various parameters for that job.  This block is called the user's Job
Data Area.  The  data here can  be examined by  the user, and  he can
change  some of  it  directly simply  by  storing new  values  in the
appropriate words.

Part  of  this data,  however,  is  important to  the  system  and is
protected from any attempt by the user to change it.   In particular,
the block from JOBHCU to JOBPFI (see table below) is copied  into the
monitor when the job is run so that the user cannot change  it.  When
the job is not running, this  block is stored back in the  user's job
data area to conserve space in the system.

References  to locations  in the  job data  area should  be  by their
symbolic  names  rather  than by  their  absolute  addresses.   It is
possible that some of these  locations might be moved around,  and if
that  happens, programs  that refer  to these  locations symbolically
will need only  to be reloaded.  All  of the symbols for  these words
are  defined  in  a  system  library  file;  their  definitions  will
automatically be retrieved  from there by  the LOADER if  the symbols
are declared EXTERNAL.

The table below explains the  names and uses of the locations  in the
job data area.

     WORD SYMBOL    EXPLANATION

     0    JOBAC     The  user's  accumulators are  stored  in  the 20
                    words beginning here during UUO execution.

     20   JOBDAC    The  user's  accumulators (whether  Exec  mode or
                    user mode) are  stored in the 20  words beginning
                    here  when a  clock interrupt  occurs  while this
                    user is running.

     40   JOBUUO    User  UUOs  (opcodes  001:037)   encountered  are
                    stored   here   after   the   effective   address
                    calculation has been done.  See Section 1.4.

     41   JOB41     The  instruction  in  this  location  is executed
                    whenever   a  user   UUO  (opcodes   001:037)  is
                    encountered.  This instruction is often a  JSR to
                    the  user's  UUO-handling  routine.   See Section
                    1.4.

     42             This word is currently unused.

     43   JOBENB    The   user's   APR   trap   enablings  (old-style
                    interrupt  enablings)   are  stored   here.   See
                    Section 9.

     44   JOBREL    The  job's  protection constant  is  stored here.
                    This is  the highest address  in the  user's core
                    image (excluding any upper segment).

     45   JOBNM1    This  is  the  first of  several  words  used for
                    temporary storage by the system.

     46   JOBTM2    This is the second word of temporary storage.

     47   JOBTM3    This is the third word of temporary storage.

     50   JOBTM4    This is the fourth word of temporary storage.

     51   JOBTM5    This is the fifth word of temporary storage.

     52   JOBPDL    This  is the  first of  several words  used  apε↓B~∀@@@@@@@@@@@@@@@AaUgP[I=o\AgQCGVA	rAiQ∀AgsgQKZ\~(~∀@@@@n`@@@@@@@@@A)Q%f@ASLAiQJAYCgP@Ao←IHAS\AiQJAakg [I←o8AgiC
V~∀@@@@@@@@@@@@@@@AE∃OS]]%]NACPA∃∨¬A	_\~(~∀@@@@nb@A∃∨	∪≥(@@A∪LAiQSL@Ao←IH@ASL@A]←8[uKe<X@ASP@Aga∃GSMS∃f@Ai!J~∀@@@@@@@@@@@@@@@AC⊃IeKgLAS\@↓iQJAUgKdOLAG←e∀@AS[¬OJA←_AB@A	Y←GV↓←L~∀@@@@@@@@@@@@@@@AQQeKJ↓o←eILAi↑A	JAkg∃HAS\↓aYCG∀A←LA)∨¬π≥$XA∃∨	)!ε~(@@@@@@@@@@@@@@@@↓C]H@@A∃∨	β!$X@AeKMaKGi%mKYr0@@@A→←d@@↓]Kn[MisYJ4∀@@@@@@@@@@@@@@@AS]i∃eekaQf\@AMKJA'∃GiS←8@r\~(~∀@@@@nd@A∃∨	⊃π*@@@Qβ1g↑AW9←nACLA∃∨¬A%(\R↓)QJA9k[EKHA←L@↓iQJA!SOQKMh~∀@@@@@@@@@@@@@@@A∩=≡AGQ¬]]KXAS\AUgJAEd@AiQ%fAU←λASf@↓gi←e∃HAQKIJ\~∀@@@@@@@@@@@@@@@AQQSfA%fACYM↑AiQ∀@AMSIghAY=GCiS=\A←L↓iQJ@↓U←DA⊃CiB~(@@@@@@@@@@@@@@@@↓CeKBAEY←
VAiQ¬h@ASL@AG←ASKHA%]i↑@↓iQJ@↓gsgi∃ZAi↑4∀@@@@@@@@@@@@@@@Aae←QKGhA%hAoQ%YJAi!JAU←λASfAIk]]S9N\@A)∨¬!
$@PbbP~∀@@@@@@@@@@@@@@@AEK1←nRA%fAiQ∀AYCgPAo←e⊂AS\AQQJAE1←GV@↓G←aS∃HAS]Q↑~∀@@@@@@@@@@@@@@@Ai!JAgsMiKZA]QK\Ae←jAeU\\@AQQJAo=eIfA%\AiQ%fAEY=GV~∀@@@@@@@@@@@@@@@@!Me←ZA∃∨¬!π*Ai<@A∃∨	!
∩R↓CeJ@↓OkCe¬]iKK⊂AG←eIKGh~(@@@@@@@@@@@@@@@@↓←]YrAoQK8@As←T@ACe∀A]←hAek]9S]NvAiQKd@AoS1XAS\4∀@@@@@@@@@@@@@@@AOK]∃eCXA¬Yg↑A	J@AG=eeKGPAoQK8As←j↓CeJ@↓ek]]%]NAS_~∀@@@@@@@@@@@@@@@As←TAQCm∀A]←h↓I←]J↓C]rA$←≡Ag%]GJAQQJAY¬ghAi%[JAs=j~∀@@@@@@@@@@@@@@@Ao∃eJA]=hAek9]S]N8~∀~∀@@@@\f@@A)∨¬!ε@@@Ae←kd@↓ae←OICZAG=k]iKH@ASf↓gi←e∃H@AQ∃eJ@A]QK\Ae←kd~(@@@@@@@@@@@@@@@@↓ae←OICZASLA]←h↓ek]]%]N\~(~∀@@@@nh@A∃∨			(@@A∪L↓		(A=dA%β%λASf↓aeKg∃]hAS8As←kHAG←e∀AS[C≥JXASQf~∀@@@@@@@@@@@@@@@AgQCeiS9NACI⊃eKgf↓Sf@AMi←eK⊂AQKe∀\@A/!K\@Ae←jAieaJ~∀@@@@@@@@@@@@@@@AQQJA	⊃(A[←9Si←d↓G←[[¬]HXAe←kdAAe←Oe¬Z@ASLAgiCIiKH~(@@@@@@@@@@@@@@@@↓Ch@AQQJAC⊃IeKgL@Aga∃GSMS∃HAS\AiQSL@Ao←IHXAk9YKgf4∀@@@@@@@@@@@@@@@AiQSL@Ao←IH@AG=]iCS9fAuKI↑\@@↓βYg↑0@AoQ∃\@A%¬∪λASL~∀@@@@@@@@@@@@@@@Aae∃gK]h0AESiL@`tbH@@Qi!J@nn\nh`X0`AESQfR@A=LAiQ%f~∀@@@@@@@@@@@@@@@Ao=eHAQ=YH@AQQJAm∃egS←8A]k[	Kd@A=LA%β%λ\@@↓)QSf↓Sf~∀@@@@@@@@@@@@@@@A→Segh↓o←eH↓oeSiQK\AS9i↑@A∧AIk[@AMSY∀AEr@↓iQJAMβ-
~(@@@@@@@@@@@@@@@@↓[←]SQ←dAG=[[C]⊂\~∀~(@@@@nj@@↓∃∨¬∃⊃α@@@↓)QSfASf@↓iQJ@↓MSegP@Ao←IH@A←_@AB@d`[o=eH@A	Y←GV4∀@@@@@@@@@@@@@@@AG←]QCS]S9NAiQ∀@Agi¬ikfA	SifA¬]H@AMsgiK4ACIIIKggKL~∀@@@@@@@@@@@@@@@A←L↓iQJA⊃KmSG∀AICi∧AEY←
Wf@Q⊃	¬fR↓M←d@↓iQJA⊃KmSG∃f~∀@@@@@@@@@@@@@@@As=j@AQ¬mJA←AK\@A=\AiQ∀@@d`↓Y←OS
CX@A$←≡AG!C]]K1f\~∀@@@@@@@@@@@@@@@AQQJAS9M←e[¬iS←\↓M←dA
QC]]∃XA≤@ `9≤8DnRASL@AS\↓iQJ~(@@@@@@@@@@@@@@@@↓o←eH↓ChA∃=¬∃	α-≤\@AQQJAY∃MhAQ¬YLA←_AKCG A←LAQQKgJ4∀@@@@@@@@@@@@@@@Ao←e⊃f@@A
←]iC%]f@@↓iQJ@AgiCQkf@@↓ESif@AM←H@AiQ∀~∀@@@@@@@@@@@@@@@AG←IeKga=]IS]≤AGQC9]KX@QCfAIKike9KHAS8@AiQ∀AeSO!h~∀@@@@@@@@@@@@@@@AQ¬YLA←_AC\@↓βεAEdAiQJAπ⊃≥M)&A+U≡XAg∃J@Aa¬OJ@l@R\~∀@@@@@@@@@@@@@@@AQQJ@AISOQhAQCY_@A←LAKCG @Ao←IH@AS8@AiQ%f@AE1←GV~(@@@@@@@@@@@@@@@@↓G←]i¬S]fAQQJAC⊃IeKgLA←LAQQJA	⊃∧AM←HAiQCPAGQC9]KX\4∀@@@@@@@@@@@@@@@A)QKMJAo←IIfACIJAOk¬eC]i∃KHAG=eeKGPA←]Yd@AoQ∃\As←T~∀@@@@@@@@@@@@@@@ACe∀@A]←PAek]9S]NvAiQKdAoSY0@AS\↓OK]KICX@A¬Yg↑A	J~∀@@@@@@@@@@@@@@@AG=eeKGPAoQK8As←j↓CeJAIk]]S9NASL↓s←jA!CmJA9←hAI=]J~∀@@@@@@@@@@@@@@@A¬]rA∩=≡AgS9GJAi!JAYCMhAiS5JAs←TAoKe∀A]←h↓ek]]%]N\~(@@@@@@@@@@@@@@@@↓βYg↑0@AiQ∀Ao←e⊃f@AM=dAGQ¬]]KYL@AQS≥QKd@↓iQC\↓iQCh4∀@@@@@@@@@@@@@@@AS]I%GCiK⊂@AErA∃∨¬!π*@QMKJ@A¬E←mJ$@ACe∀@A]←PAWKaP~∀@@@@@@@@@@@@@@@AGkIeK]hQiQJ↓GQC]9KYfA!SOQKHAiQC8A∃∨¬!π*@A¬eJA]=h~∀@@@@@@@@@@@@@@@AS8AkgJ$AC]H↓[CrA
←]iC%\AOCIECOJ8~∀~∀@@@@Dbh@A)∨¬!
$@@@AQQSf@↓Sf@AQQJ@A1Cgh@↓o←eHA←L@↓iQJ@d`[o=eHAE1←GV~(@@@@@@@@@@@@@@@@↓giCeQS]NA¬hA∃∨	∃	αA¬]H@A%fACYM↑AiQ∀AYCgP@Ao←IHA←L4∀@@@@@@@@@@@@@@@AiQJAEY←
V@QgQCeiS9N@ACPA∃∨¬!π*R@↓iQChASfA
←aSK⊂~∀@@@@@@@@@@@@@@@AS]Q↑AiQ∀AgsgQKZAo!K\As=jAek8\~∀~(@@@@bbj@↓∃∨¬⊃I_@@@↓)QJAISOQh↓QCYL↓←LAi!SfAo=eHAG=]iCS9f@Ai!JAQS≥QKgh4∀@@@@@@@@@@@@@@@ACIIIKgfA%\As←UdAkaAKdAg∃O[K]P@QJ]≤\X@h@bnnn↓M←dA∧~∀@@@@@@@@@@@@@@@@c⊗↓kaaKHRXAC9HAiQ∀AgSO8AEShPh``@``XX@AESh$ASfA=\~∀@@@@@@@@@@@@@@@AS_As←kHAkaa∃dASf↓oeSi∀Aae←QKGiK⊂\@A∪_As←j↓QCmJ↓]↑~∀@@@@@@@@@@@@@@@AUaaKd0AiQSLAo←e⊂ASfAiKe↑\4∀~∀@@@@bDl@A∃=¬'3~@@Aα↓a←S]QKd@AQ↑As←UdAgs5E←X@↓iCEY∀ASf@↓aYCG∃HAQKIJ\~∀@@@@@@@@@@@@@@@A%LAs←TAQCm∀A]↑@↓gs[E=YfAS8As←kHAG←e∀@AS[¬OJXAQQSf~(@@@@@@@@@@@@@@@@↓o←eH↓SfAu∃e↑\@A∨iQ∃eoSg∀XAiQ∀AYKMPAQCY_@A←L↓iQSf4∀@@@@@@@@@@@@@@@Ao←e⊂AG←]QCS]f↓iQJ@↓]KOCQSmJA=LAiQ∀AYK]≥iP@A=LAiQ∀~∀@@@@@@@@@@@@@@@Ags5E←X@↓iCEY∀XAC]⊂@AiQ∀AeSO!h@AQ¬YL@A
←]iC%]fAi!J~∀@@@@@@@@@@@@@@@AC⊃IeKgLA←LAQQJAM%eghA]←eHA=LAiQ∀AiCE1J\~∀4∀@@@@bbnA∃∨¬U'2@@Aα@AA←S]i∃d@Ai<@AiQ∀@AiC	YJ@A=L@Ak9IKMS9KHAO1←ECYL~∀@@@@@@@@@@@@@@@AK]
←k]i∃eKHA%fAaY¬GKH@↓QKeJ↓ErAi!J@A→=β	$8@A)Q%f~∀@@@@@@@@@@@@@@@Ao=eHAQ¬fAiQ∀@AgC5JAM←I[ChA¬fA∃∨	'3~@↓CE←m∀@QR]∀\X~∀@@@@@@@@@@@@@@@@4yo←e⊂AG←k9h|XXqiCEY∀|R\@@A∪L@AiQ∃eJ@@↓oKeJA]↑~(@@@@@@@@@@@@@@@@↓k]IK→S]KHAOY←	CYfX↓iQJ@↓YKMh↓QCYLA←L@↓iQSf↓o←eH4∀@@@@@@@@@@@@@@@AoSY0AG←]QCS\AiKe↑\4∀~∀@@@@bH`@A∃=¬'α@@@A)!JAeS≥QhAQ¬YLA←_AiQSLAo←e⊂AG←]QCS]f↓iQJAMiCei%]N~∀@@@@@@@@@@@@@@@A¬IIeKMfA←LAs←kHAae←≥eCZ\@A)Q∀A')βI(@AC9HAπ'Qβ%(~(@@@@@@@@@@@@@@@@↓[←]SQ←dAG=[[C]⊃fAGCUgJAs=kdAaI←OeC4Ai↑A	JAgi¬eiKH4∀@@@@@@@@@@@@@@@AChAQQCh@↓CIIe∃gf@QU]YKgLASh@↓SfAu∃e↑R\@A)Q∀AYKMP~∀@@@@@@@@@@@@@@@AQC1L@A←_AiQSL@Ao←IHAG←9iCS]L@AiQ∀ACIIIKgf@↓←LAi!J~∀@@@@@@@@@@@@@@@AM%egh@↓Y←GCQS←\@↓CE←m∀@As←Ud@Age[E←X@AiC	YJ@@!←d~∀@@@@@@@@@@@@@@@AAe←Oe¬ZASL↓]↑Age[E←X↓iCEY∀R\@AQQJA%∃'(@↓++≡@!gKJ~(@@@@@@@@@@@@@@@@↓aCOJ@dj`$AGCkMKf@AQQSf@↓]k[E∃dAi↑AEJ@↓gi←e∃HAS\4∀@@@@@@@@@@@@@@@A∃∨¬→@Qg∃JAEK1←nR\4∀~∀@@@@bHb@A∃=¬
@@@A)!JACI⊃eKgf↓←L@AQQJAM%eghA→eKJ@Qk]kMKHRA1←GCi%←\~∀@@@@@@@@@@@@@@@A%\@As=kdAG=eJ@A%[COJ↓Sf@AMi←eK⊂AQKe∀\@@AQQJAo=eIf~(@@@@@@@@@@@@@@@@↓Me←Z↓iQChACIIIKgfAU`Ai↑AiQCPAS\A)∨¬%0@ACe∀A]←h4∀@@@@@@@@@@@@@@@AkgK⊂\@A/!K]Km∃dAiQ∀AgsgQKZAg∃ifAk@AC\@↓∩←≡A	kMMKH~∀@@@@@@            for you,  it is put  at the address  specified by
                    JOBFF and JOBFF is then increased to point to the
                    first  word  beyond the  buffer.   The  RESET UUO
                    causes JOBFF to be  reset to the value  stored in
                    the left half of JOBSA (see above).

     122  JOBS41    The contents of JOB41 (see above) are stored here
                    just before the core image is written into a dump
                    file by a SAVE or SSAVE monitor command or by the
                    SWAP UUO.  JOB41 is restored from this  word when
                    the file is read by a GET, RUN or R command or by
                    the SWAP UUO.

     123  JOBEXM    This is a temporary cell used by the  EXAMINE and
                    DEPOSIT monitor commands.

     124  JOBREN    This  word  contains  the  address  at  which the
                    program  should  be  started  when   the  REENTER
                    monitor command  is given.  A  zero in  this word
                    means REENTER will not work.

     125  JOBAPR    This word should contain the address at which you
                    wish  your  interrupt  routine  started  when  an
                    interrupt occurs.  See Section 9.

     126  JOBCNI    When an  interrupt occurs,  a bit  indicating the
                    cause is stored here.  See Section 9.

     127  JOBTPC    When  an  interrupt occurs,  the  program counter
                    word is  stored here before  control is  given to
                    your interrupt routine.  See Section 9.

     130  JOBOPC    When you start the program with a  START, CSTART,
                    DDT  or  REENTER  monitor  command,  the  program
                    counter  word (picked  up from  JOBPC)  is stored
                    here.

     131  JOBCHN    This word is used for FORTRAN chaining.

     132  JOBFDV    This word  is used for  temporary storage  by the
                    FINISH command.

     133  JOBCOR    This word  is used for  temporary storage  by the
                    SAVE and GET commands.

     134  HINAME    The name of your upper segment, if any, is stored
                    here just before your core image is  written onto
                    a dump file by a SAVE or SSAVE monitor command or
                    by the SWAP UUO.

     135  HILOC     The location within  the dump file of  your upper
                    segment is  stored here prior  to writing  a dump
                    file with the SSAVE monitor command.

     140  JOBDA     This is the first word in your core image that is
                    not part of the job data area.
  APPENDIX 3--LOW CORE ADDRESSES OF USEFUL POINTERS IN THE MONITOR


The table below lists the contents of some absolute locations  in the
monitor.  These locations  contain pointers to various  system tables
(such as  the job  table of  login PPNs),  pointers to  special words
(monitor variables), and system parameters (such as the highest legal
job number).  Any word in memory may be examined by use of either the
PEEK UUO (see page 190) or the SETPR2 UUO (see page 188).

To get the address  of a particular job's  entry in a job  table, add
the job number to the base address of the table.

    WORD  CONTENTS  EXPLANATION

    210   JBTSTS    This is  the address of  the job table  of status
                    words.  The bits in each entry are explained with
                    the JBTSTS UUO on page 185.

    211   PRJPRG    This  is  the   address  of  the  job   table  of
                    project-programmer names.

    212   JBTSWP    This is the address  of the job table  of swapper
                    data.   The left  half (bits  0:17--the 777777,,0
                    bits)  of each  entry contains  the  logical band
                    number  used  to  swap  this  job.    Bits  18:26
                    (0,,777000 bits) contain the size of the  job (in
                    1K  blocks) as  stored on  the disk.   Bits 27:35
                    (0,,777 bits) contain the size of the job  (in 1K
                    blocks) as it will appear when it is swapped in.

    213   SPWGO     This is  the address of  the job table  of PDP-10
                    spacewar   processes.   The   right   half  (bits
                    17:35--0,,777777 bits) of each entry contains the
                    user-specified starting  address of  the spacewar
                    process.   Bits  14:17 (17,,0  bits)  contain the
                    number of ticks between startups, and  bits 10:13
                    (36,,0 bits)  contain the  number of  ticks until
                    the  next startup.   This word  is zero  for jobs
                    that  do  not  have  PDP-10   spacewar  processes
                    running.  See Section 8.

    214   TTIME     This is the address of the job table of total run
                    times (in ticks).  The time for job 0 is the null
                    time (idle time) since the last system  reload or
                    restart.

    215   UPTIME    This is the address  of a word that  contains the
                    length  of time  in ticks  since the  last system
                    reload or restart.

    216   CORMAX    This is the address  of a word that  contains the
                    largest size (in 1K blocks) a user program can be
                    and still fit in core.

    217   DEVLST    This is  the address of  the header word  for the
                    list of all device data blocks (DDBs).   The left
                    half of the  header word contains the  address of
                    the first  DDB.  DDBs  are described  in Appendix
                    4.

    220   TTYTAB    This is the address  of the table of  pointers to
                    TTY  DDBs.  Index  into this  table with  the TTY
                    line number.  The entry  for a TTY not in  use is
                    zero.  The  entry for a  TTY in use  contains the
                    following information.

        BITS   OCTAL         NAME      CONTENTS   OF   FIELD   IN
                                       TTYTAB ENTRY

        0      400000,,0     COMBIT    This bit is on if  the TTY
                                       has a monitor  command yet
                                       to be processed.
        1      200000,,0     DLYBIT    This bit is on if  the TTY
                                       has a delayed  command yet
                                       to be processed.
        2      100000,,0     PAUSEB    This bit is on if  the TTY
                                       has a command  waiting for
                                       the   output   buffer   to
                                       empty.
        11:17  177,,0        (talk)    If  the TTY  is in  a talk
                                       ring, this  field contains
                                       the  line  number  of  the
                                       next  TTY  in   the  ring.
                                       Otherwise,    this   field
                                       contains  the   TTY's  own
                                       line number.
        18:35  0,,777777     (DDB)     This is the address of the
                                       TTY's DDB.

    221   BYTE (9) SCNNUM,DPYNUM,DDNUM,PTYNUM   These four quantities
                    are  the  numbers  of  1) teletype  lines, 2) III
                    display  lines,  3) Data Disc  display  lines and
                    4) pseudo-teletype lines, respectively.

    222   JOBN-1    This is the highest possible job number.

    223   JBTADR    This  is  the   address  of  the  job   table  of
                    protection-relocation  constants.  The  left half
                    of  each  entry  contains  the  job's protection,
                    which is the highest location addressable  in the
                    job (not counting any upper segment).   The right
                    half of each entry contains the job's relocation,
                    which is  the physical  memory address  where the
                    job's core image is actually located.  When a job
                    is swapped out, its entry in this table is zero.

    224   JBTQ      This is the address  of the job table  of entries
                    in the job queues.  The queues are  circular with
                    each entry  containing a  forward pointer  in the
                    right  half and  a backward  pointer in  the left
                    half.  The pointers  are all relative to  JBTQ: a
                    pointer that is positive points to  another job's
                    entry in  the table; a  pointer that  is negative
                    points to the  queue's header word,  which itself
                    is just another  entry in the circular  queue and
                    which   contains   both   forward   and  backward
                    pointers.   The magnitude  of a  negative pointer
                    indicates the  number of the  queue the  entry is
                    in.  See also the contents of  absolute locations
                    231, 234, and 235  below and the queue  names and
                    numbers in Appendix 5.

    225   JOBNAM    This is  the address of  the job table  of sixbit
                    job names.

    226   JOB       This is the address  of a word that  contains the
                    number of the currently running job.

    227   CONFIG    This is the address of an ASCIZ string that gives
                    the title of the current system.

    230   SP2GO     This is  the address  of the  job table  of PDP-6
                    spacewar processes.  The format of this  table is
                    the same as that of the SPWGO table; see word 213
                    above.

    231   JOBQUE    This is  the address  of the  job table  of queue
                    numbers.   Each  entry  in  this  table  contains
                    either the  queue number or  the negative  of the
                    queue  number for  the particular  job.   See the
                    queue names and numbers in Appendix 5.

    232   JBTPRI    This  is  the   address  of  the  job   table  of
                    calculated priorities.

    233   JBTJL     This is the address of the job table  of pointers
                    to instantaneous job load tables.

    234   NQUES     This  is  the number  of  different  queues.  The
                    queues are numbered  from 0 to this  number.  See
                    the queue names and numbers in Appendix 5.

    235   QNAMS     This is the address of a table of the ASCII names
                    of  the various  queues.  Index  into  this table
                    with the  queue's number.   These names  are also
                    listed in Appendix 5.

    236   JBTLIN    This is the address of the job table  of attached
                    terminals.  The  entry in this  table will  be -1
                    for  a detached  job.   For an  ap	QCGQK⊂@AU←λAiQJ4∀@@@@@@@@@@@@@@@AK]iIr@Ao%YXAG=]iCS8@AiQ∀A))2AYS]∀A]k[	Kd@A%\AiQ∀~∀@@@@@@@@@@@@@@@AeS≥Qh@@↓QCYL@AC]⊂@@Ai!J@@AAKe[C9K]h@A))2@AYS9J~∀@@@@@@@@@@@@@@@AG!CeCGQKeSgQSGfA%\AiQ∀@AYK→hAQC1L\@AQQKeJA[Cr↓EJ~∀@@@@@@@@@@@@@@@A	Sif@↓←\AM=d@A]=\[aKI[C]K9h@AG!CeCGQKeSgQSGfX↓Ekh~(@@@@@@@@@@@@@@@@↓iQKg∀AESiLACeJ↓]←hA-KahAU`Ai↑↓ICiJ↓S\@AQQSfA]←eH\4∀@@@@@@@@@@@@@@@A'KJ↓→∪≥)¬∧AS\↓o←eHf`dA	KY←n↓M←dAQQJAGUeeK]PAYS]∀~∀@@@@@@@@@@@@@@@AGQ¬eCGi∃eSgi%GfvAMKJAC1g↑Ai!JA∂Q→∪≤AU+≡@A=\AaC≥J~∀@@@@@@@@@@@@@@@@n\\~∀~(@@@@Hfn@@↓→)βλ@@@@↓)QSf↓SfAi!JACI⊃eKgfA←LAQQJAi¬EYJA=L@Aa=S]iKIfAi↑4∀@@@@@@@@@@@@@@@AiQJ↓ISga1CsfN↓YS]J↓KISi=dAQK¬IKef@Q	!dAQKC⊃KefR8~∀@@@@@@@@@@@@@@@A)Q∀AeSO!hAQC1L@A←_AKCG AK]iIrAG←9iCS]L@ABAA←S]i∃d~∀@@@@@@@@@@@@@@@Ai<AiQJ↓MeKJ↓gi←e¬OJAE1←GVA→←dAi!Ch@A⊃SgaY¬r\@AQQJ~∀@@@@@@@@@@@@@@@A1KMhA!CYL@↓Q←YILAmCeous flags  used by  the line
                    editor.  When a display is not in use,  its entry
                    here  is zero.   Index into  this table  with the
                    number of the display line minus 20.

    240   JBTJLH    This is  the address of  the job table  of oldest
                    job loading.

    241   STATS     This  is  the  address  of  a  table   of  system
                    statistics.

    242   JBTGSL    This  is  the   address  of  the  job   table  of
                    guaranteed service level.

    243   STATLEN   This is the  length of the STATS table  of system
                    statistics.

    244   STATPTR   This is  the address of  a byte pointer  into the
                    STATS table of system statistics.

    245   STATNUM    This is  the address  of a  word  containing the
                    number of times the STATS table has been filled.

    246   INTIME    This  is the  address  of a  word  containing the
                    number of ticks (one tick=1/60th of a second) the
                    system  has spent  at interrupt  level  since the
                    system has been up.

    247   STBEG     This is  the address of  another table  of system
                    statistics.

    250   JBTKCJ    This  is  the   address  of  the  job   table  of
                    kilo-core-jiffies  (KCJs)  used by  each  job.  A
                    jiffie is a tick, i.e., 1/60th of a  second.  One
                    KCJ represents a job running for one tick with 1K
                    of core.

    251   JBTBTM    This is  the address  of the  job table  of login
                    times.   Each entry  in this  table  contains the
                    date and time when the particular job  logged in,
                    with the date (in system date format) in the left
                    half and the time (in seconds after  midnight) in
                    the right half.

    252   LASTRESTART   This is the address of a word  containing the
                    system uptime when the last 200 restart was done;
                    however,  200  restarts are  not  used  any more,
                    so....

    253   TTYLOK    This is the address of  a word used as a  flag to
                    prevent  users  from  typing  anything  on  their
                    terminals.

    254   MAINTMODE   This is the address of a word used as a flag to
                    indicate that system maintenance is going on.

    255   BIGHOL    This is address of a word containing the  size of
                    the biggest free hole in user core.

    256   LASTDISASTERTIME   This is the address of a word containing
                    the   system  uptime   when  the   last  disaster
                    occurred.

    257   SHFWAT    This is the address  of a word that  contains the
                    number of the next job to be shuffled in core.

    260   STEND2    This is the address of the last word in the table
                    of  system  statistics  beginning  at  STBEG (see
                    above).

    261   FBBANDLIST   This is the address of a table  of information
                    about the Librascope fast bands.

    262   EXPMOD    This is the address of  a word used as a  flag to
                    LOGIN to type out the file X.TXT[2,2].

    263   MEMSIZ    This is the address  of a word that  contains the
                    address of the lowest free storage location.

    264   FSRPQ     This  is the  address of  a table  containing the
                    number of free storage requests by size.

    265   SYSTOP    This is the address  of a word that  contains the
                    physical address of the first word in memory that
                    can be allocated to user programs.

    266   CORTAB    This is the address of a table that indicates the
                    usage of each 1K  block of core.  The  entries in
                    this table  are 9-bit bytes  packed 4 to  a word.
                    The  entry  for  a  given  block  contains either
                    1) the  number of  the job  occupying  the block,
                    2) a 101 if the block is part of the system, 3) a
                    105 if the block is part of free storage  or 4) a
                    0 if the block is unused.

    267   NOLOGIN   This is the address  of a word used as a  flag to
                    prevent anyone from logging in.

    270   PTYJOB    This is  the address  of the  table of  owners of
                    pseudo-teletypes (PTYs).  Each entry contains the
                    number of the job that owns that PTY.  Index into
                    this table with the PTY line number minus 121.

    271   JBTPRV    This  is  the   address  of  the  job   table  of
                    privileges.

    272   UCLLEN*1000+UCLDLN,,UCLTAB    The right  half of  this word
                    contains UCLTAB which is the address of  the CALL
                    UUO name  table.  This  table is  made up  of two
                    parts.  The first UCLDLN words contain  the names
                    of DEC  CALLs, and  the next  UCLLEN-UCLDLN words
                    contain the names  of the special  Stanford CALLs
                    (numbers from 400000 up).  Thus the  total length
                    of  the table  is UCLLEN,  which is  in  bits 0:8
                    (777000,,0 bits) of  word 272; the length  of the
                    first part of the table, UCLDLN, is in  bits 9:17
                    (777,,0 bits) of word 272.  The CALL names within
                    each part  are in their  expected order  by CALLI
                    number.

    273   DSKPPN    This is the address of the job table of Disk PPNs
                    (ALIASes).  If a job  has no ALIAS, its  entry in
                    this table is  zero.  Disk PPNs are  explained on
                    page 20.

    274   FTIME     This is the  address of the job  table containing
                    each job's  time last  run.  Each  entry contains
                    the  date and  time when  the particular  job was
                    last run, with  the date (in system  date format)
                    in the left half  and the time (in  seconds after
                    midnight) in the right half.

    275   NJOBS     This is the address  of the job table  that gives
                    the number of users for each upper segment.  Each
                    entry contains the number of jobs attached to the
                    given upper segment.  Index into this  table with
                    the upper segment's job number.

    276   DSKOPS    This is the  address of the job  table containing
                    the number of disk operations each job  has done.
                    The entry for job  0 is the total number  of disk
                    operations since the system was reloaded.

    277   INITIM    This is the address of a word  that  contains the
                    date and  time of the  last system reload  or 203
                    restart.  The date (in system date format)  is in
                    the  left half  and  the time  (in  seconds after
                    midnight) is in the right half.

    300   -DISPL,,COMTAB    COMTAB is  the  address of  the  table of
                    monitor commands  names in  sixbit, and  DISPL is
                    the number of commands in that table.

    301   FBACT     This is the address of  a word used as a  flag to
                    indicate  whether  swapping  is  being   done  on
                    Librascope fast bands.

    302   LINTAB    This  is the  address of  the table  of  TTY line
                    characteristics.   Each   entry  in   this  table
                    corresponds to a particular TTY.  The  TTY's line
                    characteristics  are in  the left  half  (see the
                    GETLIN UUO on page  77 for the meanings  of these
                    bits).  The  right half is  used to  store ESCAPE
                    arguments  (for TTYs  that are  displays).  Index
                    into  this  table  with the  TTY  line  number of
                    interest.

    303   ASTAB     This  is   the  address   of  the   audio  switch
                    connection table.  There is a word here  for each
                    display; index into this table with the display's
                    line number minus 20.  The data in each  entry of
                    this table is as follows (for more  details about
                    the audio switch, see Section 4.7):

        BITS   OCTAL         VALUES OF FIELDS IN ASTAB ENTRY

        0      400000,,0     One  if  a  UUO  is  waiting  for  a
                             temporary  connection  to  finish on
                             this display.
        1      200000,,0     One if  the current connection  is a
                             temporary connection.
        2      100000,,0     One  if   a  page   interruption  is
                             happening at this display.
        3      40000,,0      One if a delayed beep is pending.
        4      20000,,0      One if  the permanent  audio channel
                             is not page interruptible.
        5      10000,,0      One if the permanent channel  is not
                             beep interruptible.
        6:7    6000,,0       Beep   disposition   for   temporary
                             channel.
        8:9    1400,,0       Page   disposition   for   temporary
                             channel.
        10:13  360,,0        Temporary channel number.
        14:17  17,,0         Permanent channel number.
        18:35  0,,777777     Remaining   duration   of  temporary
                             connection (0 for infinite).

    304   JB2PRV    This is the address  of the job table  of passive
                    privilege bits.

    305   -LFTLEN,,LFTTAB    This word  contains the  number (LFTLEN)
                    and address  (LFTTAB) of  the table  of left-half
                    privilege bits  and their  names.  Each  entry in
                    this    table    is   of    the    form   <sixbit
                    name>,,<half-word bit value>.

    306   -RHTLEN,,RHTTAB    This word  contains the  number (RHTLEN)
                    and address (RHTTAB)  of the table  of right-half
                    privilege bits  and their  names.  Each  entry in
                    this    table    is   of    the    form   <sixbit
                    name>,,<half-word bit value>.

    307   JBTSIN    This is the address  of the job table  of entries
                    in the list of jobs to be swapped in.

    310   JBTGLU    This is  the address  of the  job table  of cells
                    used to mark jobs  which must not be  swapped out
                    or shuffled.

    311   JOBNM1    This  is the  address  of a  word  containing the
                    current  maximum number  of jobs  the  system can
                    support.

    312   DDFCNT    This  is the  address  of a  word  containing the
                    number of Data  Disc channels that  are currently
                    available.

    313   DSTBLN,,DSTBUF   This word contains the length (DSTBLN) and
                    address (DSTBUF) of a table of statistics for the
                    disk.

    314   COMWHO    This is the address of the first of several words
                    used  to  hold   the  system  wholine   in  ASCID
                    representation   for   displaying.    The  system
                    wholine ends with a CR and LF.

    315   NPARIN    This is the address of a word which  contains the
                    number   of    parity   errors    detected   with
                    indeterminate locations.  The word at NPARIN-1 is
                    called NPARER  and contains  the total  number of
                    parity errors detected.

    316   JBTMAP    This is the address of the job table  of pointers
                    to each job's page map.
               APPENDIX 4--DEVICE DATA BLOCKS (DDBS)


For  each device  used, there  is a  Device Data  Block (DDB)  in the
system in which is kept a collection of data pertinent to the device.
Certain devices (including the disk,  the IMP, and TTYs) do  not have
DDBs when they  are not in use;  other devices' DDBs  are permanently
built into the list.  With  sharable devices such as the  disk, there
is a DDB for each user I/O channel with the device open.

All the  DDBs are linked  together in one  big list.  The  header for
this list is located at DEVLST;  the left half of the word  at DEVLST
points to the first DDB.  (The word DEVLST is pointed to by  the word
at absolute  memory address  217; see Appendix  3.)  All  pointers to
DDBs point to  word 0 of  the DDB, which  is the word  containing the
device's physical name as explained below.

The data common to all DDBs is explained below.  Other data is device
dependent.

     WORD NAME      CONTENTS

     -1   DEVCMR    This is  a word  of some  special characteristics
                    for the device.  Bit  0 (400000,,0 bit) is  on if
                    the device has an internal system buffer.   Bit 1
                    (200000,,0  bit)  is  on  if  the  device service
                    routines  can be  called  even if  the  device is
                    active.   Bit  2  (100000,,0 bit)  is  on  if the
                    device  is  sharable  (e.g.,  the  disk).   Bit 3
                    (40000,,0  bit) is  on  if the  device  cannot be
                    assigned  or  INITed  by  jobs  without  the  LUP
                    privilege.   Bit 4  (20000,,0 bit)  is on  if the
                    device must be  ASSIGNed before it can  be INITed
                    (e.g., UDP).

     0    DEVNAM    This is the device's physical name in sixbit.

     1    DEVCHR    Bits 0:5  (770000,,0 bits)  of this  word contain
                    the number of the  job the device belongs  to, or
                    zero  if  the  device is  unused;  if  this field
                    contains zero and the device is ASSIGNed (see the
                    DEVCHR UUO on page 61), then the device  has been
                    detached   from   the   system    (probably   for
                    maintenance).
                    Bits 6:11 (7700,,0 bits) contain the current hung
                    time count down in seconds.
                    Bits 12:17 (77,,0 bits) contain the hung  time in
                    seconds.
                    Bits  18:23  (0,,770000  bits)  contain  the unit
                    number  for multiple  unit devices  like dectapes
                    and magnetic tapes.
                    Bits  24:35 (0,,7777  bits) contain  the  size in
                    words of the buffer this device uses.

     2    DEVIOS    This  is  the  device's  I/O  status  word.   See
                    Section 2.6.

     3    DEVSER    The right half of this word contains  the address
                    in  the  system  of  this  device's  UUO dispatch
                    table.  The left half contains the address of the
                    next DDB in the list, or zero if this is the last
                    DDB.

     4    DEVMOD    This is the word returned by the DEVCHR  UUO (see
                    page 61).

     5    DEVLOG    This is the  device's logical name in  sixbit, if
                    any.

     6    DEVBUF    The  left half  of  this word  contains  the user
                    address of the output buffer header, if any.  The
                    right half contains the user address of the input
                    buffer header, if any.

     7    DEVIAD    The  right half  of this  word contains  the user
                    address of the input buffer currently  being used
                    for this device, or zero if none.  The  left half
                    of this  word contains in  the index  field (bits
                    14:17--the 17,,0 bits) the number of a  system AC
                    (PROG) used for indirecting through this  word to
                    the input buffer.

     10   DEVOAD    The  right half  of this  word contains  the user
                    address of the output buffer currently being used
                    for this device, or zero if none.  The  left half
                    of this  word contains in  the index  field (bits
                    14:17--the 17,,0 bits) the number of a  system AC
                    (PROG) used for indirecting through this  word to
                    the output buffer.

     11   DEVFIL    For directory devices like the disk and dectapes,
                    this word  contains the sixbit  name of  the file
                    that is  currently open,  or zero  if no  file is
                    open.

     12   DEVEXT    For directory devices the left half of  this word
                    contains  the  file name  extension  of  the file
                    currently open.

     13   FILPRO    For disk files this word contains the protection,
                    mode  and date/time  written.  For  dectape files
                    this  word contains  the date  written.   See the
                    LOOKUP UUO on page 32.

     14   FILPPN    For   disk   files   this   word   contains   the
                    project-programmer  name  of  the  file currently
                    open.
                APPENDIX 5--QUEUE NAMES AND NUMBERS


The table below lists the various queues which a job can be  in along
with the codes representing the queues.  The queue a job is in can be
found from the job table at JOBQUE, whose address is contained in the
word at absolute 231 (see  Appendix 3).  A job's entry in  that table
may be either the positive code  or the negative of the code  for the
queue.  See also the  contents of absolute locations 224  (JBTQ), 234
(NQUES), and 235 (QNAMS) in Appendix 3.

    CODE  NAME      QUEUE'S SIGNIFICANCE FOR JOBS IN IT

    0     FUCKQ     (This queue is unused.)
    1     STQ       Waiting for  system tape  to be  free.  (This
                    queue is unused.)
    2     DTQ       Waiting for dectape controller to be free.
    3     DCQ       Waiting for data controller (for  magtape and
                    dectape) to be free.
    4     MTQ       Waiting for magtape controller to be free.
    5     IOWQ      Waiting for I/O to finish.
    6     DIOWQ     Waiting in core for I/O to finish.
    7     DWQ       Waiting for device to be available.
    10    NULQ      No core assigned.
    11    STOPQ     Job stopped.
    12    INTWQ     Waiting for an interrupt to occur.
    13    SEGQ      Upper segment waiting to be swapped in.
    14    RUNQ      Generalized run queue.
    15    TQ        High-priority run queue.
    16    CMQ       Waiting  to  be  swapped  in  for  a  monitor
                    command to be processed.
                 APPENDIX 6--STANFORD CHARACTER SET


The table below gives the octal codes for characters in  the Stanford
character set.  The octal code for an ascii character is three digits
and is  obtained for  a character in  the table  by adding  the ASCII
label of the character's row to the label of the  character's column.
For example, the ascii code for "G" is 100+7, or 107.  Similarly, the
octal code for  a sixbit character is  two digits and is  obtained by
adding the SIXBIT  label of the character's  row to the label  of the
character's column.  For example, the sixbit code for "G" is 40+7, or
47.  The sixbit code for a character is always 40 less than the ascii
code for that character.   Note that the only characters  with sixbit
representations are those with ascii codes in the range 40:137.

The  abbreviations  used  for special  characters  in  the  table are
explained below.

        
                     0   1   2   3   4   5   6   7
              ASCII
                000  NUL ↓   α   β   ∧   ¬   ε   π
                010  λ   TAB LF  VT  FF  CR  ∞   ∂
                020  ⊂   ⊃   ∩   ∪   ∀   ∃   ⊗   ↔
        SIXBIT  030  _   →   ~   ≠   ≤   ≥   ≡   ∨
            00  040  SPC !   "   #   $   %   &   '
            10  050  (   )   *   +   ,   -   .   /
            20  060  0   1   2   3   4   5   6   7
            30  070  8   9   :   ;   <   =   >   ?
            40  100  @   A   B   C   D   E   F   G
            50  110  H   I   J   K   L   M   N   O
            60  120  P   Q   R   S   T   U   V   W
            70  130  X   Y   Z   [   \   ]   ↑   ←
                140  `   a   b   c   d   e   f   g
                150  h   i   j   k   l   m   n   o
                160  p   q   r   s   t   u   v   w
                170  x   y   z   {   |   ALT }   BS
        

                     NUL (0) is a null.
                     TAB (11) is a tab.
                     LF (12) is a linefeed.
                     VT (13) is a vertical tab.
                     FF (14) is a formfeed.
                     CR (15) is a carriage return.
                     SPC (40) is a space.
                     ALT (175) is an altmode.
                     BS (177) is a backspace.
                     APPENDIX 7--UUOS BY NUMBER

-----UUOs-----           ----CALLIs----           ----CALLIs----
Opcode  Name             Number  Name             Number  Name
 040    CALL                0    RESET            400012  UFBCLR
 041    INIT                1    DDTIN            400013  JBTSTS
 043    SPCWAR              2    SETDDT           400014  TTYIOS
 047    CALLI               3    DDTOUT           400015  CORE2
 050    OPEN                4    DEVCHR           400016  ATTSEG
 051    TTYUUO              5    DDTGT            400017  DETSEG
 055    RENAME              6    GETCHR           400020  SETPRO
 056    IN                  7    DDTRL            400021  SEGNUM
 057    OUT                10    WAIT             400022  SEGSIZ
 060    SETSTS             11    CORE             400023  LINKUP
 061    STATO              12    EXIT             400024  DISMIS
 062    GETSTS             13    UTPCLR           400025  INTENB
 063    STATZ              14    DATE             400026  INTORM
 064    INBUF              15    LOGIN            400027  INTACM
 065    OUTBUF             16    APRENB           400030  INTENS
 066    INPUT              17    LOGOUT           400031  INTIIP
 067    OUTPUT             20    SWITCH           400032  INTIRQ
 070    CLOSE              21    REASSI           400033  INTGEN
 071    RELEAS             22    TIMER            400034  UWAIT
 072    MTAPE              23    MSTIME           400035  DEBREA
 073    UGETF              24    GETPPN           400036  SETNM2
 074    USETI              25    TRPSET           400037  SEGNAM
 075    USETO              26    TRPJEN           400040  IWAIT
 076    LOOKUP             27    RUNTIM           400041  USKIP
 077    ENTER              30    PJOB             400042  BUFLEN
                           31    SLEEP            400043  NAMEIN
 701    DPYCLR             32    SETPOV           400044  SLEVEL
 702    PPIOT              33    PEEK             400045  IENBW
 703    UPGIOT             34    GETLN            400046  RUNMSK
 704    UINBF              35    RUN              400047  TTYMES
 705    UOUTBF             36    SETUWP           400050  JOBRD
 706    FBREAD             37    REMAP            400051  DEVUSE
 707    FBWRT              40    GETSEG           400052  SETPR2
 710    MAIL               41    GETTAB           400053  GETPR2
 711    PTYUUO             42    SPY              400054  RLEVEL
 712    POINTS             43    SETNAM           400055  UFBPHY
 713    UPGMVE             44    TMPCOR           400056  UFBSKP
 714    UPGMVM                                    400057  FBWAIT
 715    PGIOT            400000  SPWBUT           400060  UFBERR
 716    CHNSTS           400001  CTLV             400061  WAKEME
 717    CLKINT           400002  SETNAM           400062  GETNAM
 720    INTMSK           400003  SPCWGO           400063  SNEAKW
 721    IMSKST           400004  SWAP             400064  SNEAKS
 722    IMSKCL           400005  EIOTM            400065  GDPTIM
 723    INTUUO           400006  LIOTM            400066  SETPRV
 724    IOPUSH           400007  PNAME            400067  DDCHAN
 725    IOPOP            400010  UFBGET           400070  VDSMAP
 726    IOPDL            400011  UFBGIV           400071  DSKPPN


----CALLIs----           ----TTYUUOs---
Number  Name             Number  Name
400072  DSKTIM              0,   INCHRW
400073  SETCRD              1,   OUTCHR
400074  CALLIT              2,   INCHRS
400075  XGPUUO              3,   OUTSTR
400076  LOCK                4,   INCHWL
400077  UNLOCK              5,   INCHSL
400100  DAYCNT              6,   GETLIN
400101  ACCTIM              7,   SETLIN
400102  UNPURE             10,   RESCAN
400103  TMPCRD             11,   CLRBFI
400104  DEVNUM             12,   CLRBFO
400105  ACTCHR             13,   INSKIP
400106  UUOSIM             14,   INWAIT
400107  PPSPY              15,   SETACT
400110  ADSMAP             16,   TTREAD
400111  BEEP               17,   OUTFIV
400112  WHO
400113  TTYJOB
400114  NULMES           ----PTYUUOs---
400115  GETPRV           Number  Name
400116  TTYSKP              0,   PTYGET
400117  DIAL                1,   PTYREL
                            2,   PTIFRE
---MAIL UUOs--              3,   PTOCNT
Number  Name                4,   PTRD1S
   0,   SEND                5,   PTRD1W
   1,   WRCV                6,   PTWR1S
   2,   SRCV                7,   PTWR1W
   3,   SKPME              10,   PTRDS
   4,   SKPHIM             11,   PTWRS7
   5,   SKPSEN             12,   PTWRS9
                           13,   PTGETL
----INTUUOs---             14,   PTSETL
Number  Name               15,   PTLOAD
   0,   INTDEJ             16,   PTJOBX
   1,   IMSTW
   2,   IWKMSK
   3,   INTDMP
   4,   INTIPI           ----PPIOTs----
   5,   IMSKCR           Number  Name
                            0,   PPSEL
----PGIOTs----              1,   PPACT
Number  Name                2,   DPYPOS
   0,   PGSEL               3,   DPYSIZ
   1,   PGACT               4,   PPREL
   2,   PGCLR               5,   PPINFO
   3,   DDUPG               6,   LEYPOS
   4,   PGINFO              7,   PPHLD
                                INDEX

136 interface   313
167 data channel   315
:   8
=   8
ACCTIM UUO (CALLI 400101)   169
ACTCHR UUO (CALLI 400105)   91
activation table   77, 84
ACWPRV bit (40,,0--privileges)
   178
AD: the old AD/DA converter   313
ADC: new analog-to-digital
   converter   309
ADSMAP UUO (CALLI 400110)   145
ALIAS   20
analog-to-digital converter, new
   309
analog-to-digital converter, old
   313
APRENB UUO (CALLI 16)   232
ARPA network   317
ascii character codes   368
ASCII, ASCID and ASCIZ
   representations   362
ASSIGN command   46
ASTAB   365
ATTSEG UUO (CALLI 400016)   153
audio switch   144, 365
bad retrieval   36
BEEP UUO (CALLI 400111)   146
BGRAB bit (0,,200--ELF I/O
   status)   322
bit numbers   8
bits, groups of   8
bits, references to   8
bless host   320
BMAR   291
buffer diagram   15
buffer header   13
buffer pointers   14
buffer rings   13
buffer rings, setting up   25
buffer sizes, nonstandard   28
buffer-creating UUOs   25
buffered mode   11
buffers   14
BUFLEN UUO (CALLI 400042)   30
BUSNIT bit (0,,4000--ELF I/O
   status)   322
BUSTO bit (0,,20000--ELF I/O
   status)   322
CALL UUO (UUO 040)   5
CALLI UUO (UUO 047)   5
CALLIT UUO (CALLI 400074)   187
cameras, TV   315
cart control transmitter (CAR)
   330
channel number   10
channel use bits   60
CHARACTER MODE   75
character set   368
CHNSTS UUO (UUO 716)   60
CLKINT UUO (UUO 717)   213
CLKR bit (400,,0--job status)
   185
clock interrupts   213
CLOSE UUO (UUO 070)   44
CLRBFI UUO (TTYUUO 11,)   80
CLRBFO UUO (TTYUUO 12,)   81
CLSR bit (20000,,0--IMP
   connection status)   318
CLSS bit (40000,,0--IMP
   connection status)   318
CMWB bit (200000,,0--job status)
   185
COMBIT bit (400000,,0--TTYTAB)
   365
compute time   170
CONNECT to socket   320
CONT bit (0,,100--ADC/DAC I/O
   status)   310
CONTROL and META keys   68, 84,
   106, 110, 283
control-C by PTYUUO, sending
   110
CONTROL-CR, disabling   84
COPY   19
CORE UUO (CALLI 11)   172
CORE2 UUO (CALLI 400015)   152
creation date   32
CSTART command   364
CTLV UUO (CALLI 400001)   94
CTROV bit (0,,1000--IMP I/O
   status)   318
CTYLIN bit (200000,,0--line
   characteristics)   77
CYCDON bit (0,,20--ADC/DAC I/O
   status)   310
CYCLE bit (0,,200--ADC/DAC I/O
   status)   310
DA/AD converter, old   313
DAC: new digital-to-analog
   converter   309
DART   19
Data Disc channels   140
Data Disc display system   348
Data Disc displays   117
data modes   11
data switches, PDP-10 console
   186
date format, system   165
date last dumped   278
date last referenced   278
DATE UUO (CALLI 14)   165
dates and times from UUOs   164
DAWPRV bit
   (200000,,0--privileges)   178
DAYCNT UUO (CALLI 400100)   166
DDBs   366
DDCHAN UUO (CALLI 400067)   141
DDDLIN bit (20000,,0--line
   characteristics)   77
DDT   260, 364
DDT command   260, 364
DDTGT UUO (CALLI 5)   275
DDTIN UUO (CALLI 1)   270
DDTM bit (1000,,0--TTY I/O
   status)   283
DDTOUT UUO (CALLI 3)   271
DDTRL UUO (CALLI 7)   275
DDUPG UUO (PGIOT 3,)   135
DEASSIGN command   46
DEBREAK UUO (CALLI 400035)   216
DEC UUOs   7
DECIMAL   8
dectapes   294
DELETE command   19
delete-protect bit (200--file
   protection)   19
deleting files   34
detached jobs   77
DETSEG UUO (CALLI 400017)   154
DEVCHR UUO (CALLI 4)   61
device characteristics word   61
device data blocks   366
device I/O status word   SEE I/O
   status word
device names, logical and
   physical   22
device unit number, finding   64
DEVNUM UUO (CALLI 400104)   64
DEVPRV bit (400,,0--privileges)
   178
DEVSBB bit (1000,,0--I/O status)
   16
DEVUSE UUO (CALLI 400051)   62
DIAL UUO (CALLI 400117)   335
dialer   334
digital-to-analog converter, new
   309
digital-to-analog converter, old
   313
directory files   18, 277
disk error codes   36
disk file protection system   19
disk file record offset   279
disk files   277
Disk PPN   20
disk transmission error   36
disk, bad retrieval for   36
disk, full   36
DISLIN bit (400000,,0--line
   characteristics)   77
DISMIS UUO (CALLI 400024)   206,
   214
display output   115
display programming, an example
   357
display programs   129
displays, Data Disc   117
displays, III   116
displays, resetting   139
DLYBIT bit (200000,,0--TTYTAB)
   365
DMPBIT bit (0,,400--disk I/O
   status)   280
DPY headers   365
DPYCLR UUO (UUO 701)   139
DPYOUT   130
DPYPOS UUO (PPIOT 2,)   122
DPYSIZ UUO (PPIOT 3,)   123
DSK: the file disk   277
DSKPPN UUO (CALLI 400071)   21
DSKTIM UUO (CALLI 400072)   275
DTAs: dectapes   294
dump date for disk files   278
dump mode   11, 12
dump mode command lists   12
dump-never bit (400--file
   protection)   19
ECHARR bit (10000,,0--line
   characteristics)   77
echo suppression for terminals
   67, 77, 94, 114
EIOTM UUO (CALLI 400005)   262
ELF: the PDP-11 interface   321
ENTER UUO (UUO 077)   33, 306
ENTERs, long block   278
ENTRB bit (0,,20000--channel
   status)   60
escape characters by PTYUUO,
   sending   106
example of display programming
   357
example of general I/O   356
example of using interrupts   358
EXIT UUO (CALLI 12)   248
extended UUOs   4
FAIL   4, 5
fast bands   234
FBERP bit (0,,4000--job status)
   185
FBINP bit (0,,10000--job status)
   185
FBJWT bit (0,,2000--job status)
   185
FBREAD UUO (UUO 706)   240
FBWAIT UUO (CALLI 400057)   245
FBWPRV bit (4,,0--privileges)
   178
FBWRT UUO (UUO 707)   241
FCS bit (20,,0--line
   characteristics)   77
file dumping   19
file protection bits   19
file's protection, mode written,
   and date/time written   32
filenames   17
filenames, changing   34
files   17
files, creating   33
files, deleting   34
files, extending   54
files, opening   31
files, random access of   51
files, updating   35
Font compile and select   291
Font Compiler   292
full-character-set mode   77
FULTWX bit (4,,0--line
   characteristics)   77
gadgets, special I/O   333
GARBIT bit (0,,200--disk I/O
   status)   280
GARBIT bit (0,,200--UDP I/O
   status)   308
GCW   287
GDPTIM UUO (CALLI 400065)   275
GETCHR UUO (CALLI 6)   272
GETLIN UUO (TTYUUO 6,)   77
GETLN UUO (CALLI 34)   95
GETNAM UUO (CALLI 400062)   175
GETPPN UUO (CALLI 24)   174
GETPR2 UUO (CALLI 400053)   189
GETPRV UUO (CALLI 400115)   178
GETSEG UUO (CALLI 40)   275
GETSTS UUO (UUO 062)   56
GETTAB UUO (CALLI 41)   275
glitch hold count   125, 127
glitches   123
GRAB bit (10,,0--ELF USET)   325
Group Command Word   287
HDEAD bit (0,,2000--IMP I/O
   status)   318
hidden records   279
high segments   SEE upper
   segments
HNGTRP bit (0,,200--LPT I/O
   status)   285
HUNG bit (0,,1000--ELF I/O
   status)   322
I/O byte pointer and byte count
   13
I/O channels   10
I/O devices   276
I/O status error bits   38
I/O status testing and setting
   55
I/O status word   16, 56, 57, 65
I/O UUOs, example sequence of   9
I/O, an example   356
I/O, general   9
I/O, synchronous   16
I/O, terminating   43
I/O, transferring data   37
I/O, TTY   66
IBUFB bit (0,,200000--channel
   status)   60
ICLOSB bit (0,,2000--channel
   status)   60
IENBW UUO (CALLI 400045)   218
III display processor   336
III displays   116
illegal memory reference   207
ILM bit (0,,20000--interrupts)
   207
IMLACs, sending special commands
   to   86
IMLIN bit (2000,,0--line
   characteristics)   77
IMLTTY bit (40000,,0--TTY I/O
   status)   283
IMP   317
IMPBIT bit (1000,,0--line
   characteristics)   77
IMSKCL UUO (UUO 722)   223
IMSKCR UUO (INTUUO 5,)   230
IMSKST UUO (UUO 721)   222
IMSTW UUO (INTUUO 1,)   226
IN UUO (UUO 056)   38
INBFB bit (0,,400--channel
   status)   60
INBUF UUO (UUO 064)   26
INCHRS UUO (TTYUUO 2,)   73
INCHRW UUO (TTYUUO 0,)   71
INCHSL UUO (TTYUUO 5,)   76
INCHWL UUO (TTYUUO 4,)   75
information UUOs   163
INFPRV bit (20,,0--privileges)
   178
INIT UUO (UUO 041)   23
INITB bit (0,,400000--channel
   status)   60
initializing a device   22
INPB bit (0,,10000--channel
   status)   60
INPUT UUO (UUO 066)   39
input/output   SEE I/O
INSKIP UUO (TTYUUO 13,)   82
INTACM UUO (CALLI 400027)   211
INTCLK bit (200,,0--interrupts)
   207
INTDEJ UUO (INTUUO 0,)   225
INTDMP UUO (INTUUO 3,)   228
INTENB UUO (CALLI 400025)   209
INTENS UUO (CALLI 400030)   212
interrupt level   208
interrupt mask   221, 230
interrupt-wait wakeup mask   227
interrupts pending   220
interrupts, an example   358
interrupts, generating   219, 229
interrupts, new-style   208
interrupts, old-style   231
interrupts, user   207
INTFOV bit (0,,100--interrupts)
   207
INTGEN UUO (CALLI 400033)   219
INTIIP UUO (CALLI 400031)   267
INTIMS bit (20,,0--interrupts)
   207, 318
INTINP bit (10,,0--interrupts)
   207, 318
INTINR bit (100,,0--IMP
   connection status)   318
INTINR bit (100,,0--interrupts)
   207, 318
INTINS bit (40,,0--IMP connection
   status)   318
INTINS bit (40,,0--interrupts)
   207, 318
INTIPI UUO (INTUUO 4,)   229
INTIRQ UUO (CALLI 400032)   220
INTMAIL bit (4000,,0--interrupts)
   207
INTMSK UUO (UUO 720)   221
INTORM UUO (CALLI 400026)   210
INTOV bit (0,,10--interrupts)
   207
INTPAR bit (400,,0--interrupts)
   207
INTPTI bit (10000,,0--interrupts)
   207
INTPTO bit (1000,,0--interrupts)
   207
INTQXF bit (2,,0--interrupts)
   207
introduction   2
INTSHD bit (40000,,0--interrupts)
   207
INTSHW bit
   (100000,,0--interrupts)   207
INTSWD bit
   (200000,,0--interrupts)   207
INTSWW bit
   (400000,,0--interrupts)   207
INTTTI bit (4,,0--interrupts)
   207
INTTTY bit (20000,,0--interrupts)
   207
INTUUO UUO (UUO 723)   224
INTWAIT bit (2000,,0--interrupts)
   207
INWAIT UUO (TTYUUO 14,)   83
IO   SEE I/O
IO bit (20,,0--I/O status)   16
IOACT bit (0,,10000--ELF I/O
   status)   322
IOACT bit (0,,10000--I/O status)
   16
IOAFT bit (0,,4000--ADC/DAC I/O
   status)   310
IOBEG bit (2,,0--I/O status)   16
IOBKTL bit (0,,40000--DTA I/O
   status)   295
IOBKTL bit (0,,40000--I/O status)
   16, 38
IOBOT bit (0,,4000--MTA I/O
   status)   299
IOCON bit (0,,40--I/O status)
   16
IODEND bit (0,,20000--I/O status)
   16, 38
IODERR bit (0,,200000--ELF I/O
   status)   322
IODERR bit (0,,200000--I/O
   status)   16, 38
IODERR bit (0,,200000--XGP I/O
   status)   289
IODTER bit (0,,100000--I/O
   status)   16, 38
IODTER bit (0,,100000--XGP I/O
   status)   289
IOEND bit (40,,0--I/O status)
   16
IOFST bit (4,,0--I/O status)   16
IOIMPM bit (0,,400000--ELF I/O
   status)   322
IOIMPM bit (0,,400000--I/O
   status)   16, 38
IOIMPM bit (0,,400000--XGP I/O
   status)   289
IONRCK bit (0,,100--MTA I/O
   status)   299
IOP   315
IOPAR bit (0,,1000--MTA I/O
   status)   299
IOPDL UUO (UUO 726)   50
IOPOP UUO (UUO 725)   49
IOPUSH UUO (UUO 724)   48
IOSUPR bit (0,,1000--TTY I/O
   status)   283
IOSYNC bit (0,,40--ADC/DAC I/O
   status)   310
IOT UUOs   7
IOT-USER mode   3, 262, 361
IOTEND bit (0,,2000--MTA I/O
   status)   299
IOTEND bit (0,,2000--XGP I/O
   status)   289
IOW bit (1,,0--I/O status)   16
IOWC bit (0,,20--I/O status)
   14, 16
IOWD   12, 363
IWAIT UUO (CALLI 400040)   217
IWKMSK UUO (INTUUO 2,)   227
JACCT bit (100000,,0--job status)
   185
JBTSTS UUO (CALLI 400013)   185
JERR bit (20000,,0--job status)
   185
JHLDIN bit (2,,0--job status)
   185
JLOCK bit (0,,100000--job status)
   185
JLOG bit (10000,,0--job status)
   185
JNA bit (40000,,0--job status)
   185
job data area   364
job information   171
job name   175, 176, 184
job number   173
job status word   185
job using a device   62
JOBAPR   207, 208, 231, 364
JOBCNI   207, 208, 231, 267, 364
JOBDDT   260, 364
JOBENB   364
JOBFF   25, 250, 364
JOBHCU   364
JOBHRL   147, 364
JOBINT   208, 364
JOBJDA   364
JOBOPC   364
JOBPC   364
JOBRD UUO (CALLI 400050)   257
JOBREL   25, 147, 364
JOBREN   364
jobs waiting for a device, number
   of   62
JOBSA   250, 251, 364
JOBTPC   207, 208, 216, 231, 364
JSEG bit (1000,,0--job status)
   185
JWP bit (1,,0--job status)   185
KILPRV bit (1000,,0--privileges)
   178
LERSEE bit (40000,,0--line
   characteristics)   77
LETAB   365
letters, =32 word   191
LEYPOS UUO (PPIOT 6,)   126
LF insertion after CRs   67, 77
Librascope fast band storage
   234
line characteristics   77, 78,
   365
line characteristics, PTY   111
line editor Y-position   126
line hold count   125, 127
LINE MODE   75
line number, finding TTY   77
line printer (LPT)   284
LINKUP UUO (CALLI 400023)   150
LINTAB   365
LIOTM UUO (CALLI 400006)   269
LISTEN for connect to socket
   320
LMAR   291
LOCK UUO (CALLI 400076)   258
logical device name   22
LOGIN UUO (CALLI 15)   263
LOGOUT UUO (CALLI 17)   264
LOOKB bit (0,,40000--channel
   status)   60
LOOKUP UUO (UUO 076)   32
LOOKUPs, long block   278
LOST bit (0,,2000--ADC/DAC I/O
   status)   310
low core monitor pointers   365
lower segments   SEE upper
   segments
LPT: the line printer   284
LPTNCC bit (0,,100--LPT I/O
   status)   285
LUP bit (1,,0--privileges)   19,
   148
LUPPRV bit (1,,0--privileges)
   178
MACRO   5
magnetic tapes   298
mail system, inter-job   191
mail system, inter-job, an
   example   358
MAIL UUO (UUO 710)   192
mail, receiving   196
mail, sending   193
mailboxes, peeking at   199
margins, XGP   291
MESPRV bit (2000,,0--privileges)
   178
META key   SEE CONTROL and META
   keys
MFD (Master File Directory)   18
microswitch keyboard bits   85
misc. UUOs   247
modes, I/O data   11
monitor calls   3
monitor commands, rescanning   79
monitor, peeking at the   183
MSTIME UUO (CALLI 23)   168
MTAPE UUO (UUO 072)   282, 291,
   301, 312, 320, 328
MTAPE UUO for ADC & DAC   311
MTAPE UUO for magnetic tapes
   300
MTAPE UUO for the disk   281
MTAPE UUO for the ELF   328
MTAPE UUO for the IMP   319
MTAPE UUO for the XGP   290
MTAs: magnetic tapes   298
NAMEIN UUO (CALLI 400043)   184
network, ARPA   317
NOECHB bit (0,,400--TTY I/O
   status)   283
NOECHO bit (0,,200--TTY I/O
   status)   283
non-existent memory reference
   207
NOPAR bit (20,,0--ELF USET)   325
NRETRY bit (0,,100--ELF I/O
   status)   322
NULMES UUO (CALLI 400114)   89
NXM bit (0,,10000--interrupts)
   207
NXM11 bit (0,,40000--ELF I/O
   status)   322
OBUFB bit (0,,100000--channel
   status)   60
OCLOSB bit (0,,1000--channel
   status)   60
OCTAL   8
OPEN UUO (UUO 050)   24
OUT UUO (UUO 057)   40
OUTBFB bit (0,,200--channel
   status)   60
OUTBUF UUO (UUO 065)   27
OUTCHR UUO (TTYUUO 1,)   72
OUTFIV UUO (TTYUUO 17,)   86
OUTPB bit (0,,4000--channel
   status)   60
OUTPUT UUO (UUO 067)   41
OUTSTR UUO (TTYUUO 3,)   74
overflow, arithmetic   207
page printer   118, 125
paper tape   302, 303
PARITY bit (0,,2000--ELF I/O
   status)   322
parity error   207, 208
PAUSEB bit (100000,,0--TTYTAB)
   365
PC flags   360
PDP-10 information   359
PDP-11 interface (ELF)   321
PEEK UUO (CALLI 33)   190
PGACT UUO (PGIOT 1,)   133
PGCLR UUO (PGIOT 2,)   134
PGINFO UUO (PGIOT 4,)   136
PGIOT UUO (UUO 715)   131
PGSEL UUO (PGIOT 0,)   132
phantom jobs   256
physical device name   22, 63
physical name of attached TTY
   95
pieces of glass   116, 133, 136
PIECES OF PAPER   118
PJOB UUO (CALLI 30)   173
plotter (PTP)   302
PMAR   288, 291
PNAME UUO (CALLI 400007)   63
POINTS UUO (UUO 712)   160
poping I/O channels   47
POV bit (0,,200000--interrupts)
   207
PPACT UUO (PPIOT 1,)   121
PPHLD UUO (PPIOT 7,)   127
PPINFO UUO (PPIOT 5,)   125
PPIOT UUO (UUO 702)   119
PPN   17, 18, 20, 21, 174
PPREL UUO (PPIOT 4,)   124
PPSEL UUO (PPIOT 0,)   120
PPSPY UUO (CALLI 400107)   128
PRIPRV bit
   (400000,,0--privileges)   178
PRIVILEGES, ACTIVE   178
privileges, active   179
PRIVILEGES, PASSIVE   178
PRIVILEGES, TEMPORARY   178
project-programmer name   SEE PPN
PROPRV bit
   (100000,,0--privileges)   178
protection constant of a job
   364
protection key for disk files
   19
pseudo-teletypes   96
PTGETL UUO (PTYUUO 13,)   111
PTIFRE UUO (PTYUUO 2,)   102
PTJOBX UUO (PTYUUO 16,)   114
PTLOAD UUO (PTYUUO 15,)   113
PTOCNT UUO (PTYUUO 3,)   103
PTP: paper tape punch and plotter
   302
PTR: paper tape reader   303
PTRD1S UUO (PTYUUO 4,)   104
PTRD1W UUO (PTYUUO 5,)   105
PTRDS UUO (PTYUUO 10,)   108
PTSETL UUO (PTYUUO 14,)   112
PTWR1S UUO (PTYUUO 6,)   106
PTWR1W UUO (PTYUUO 7,)   107
PTWRS7 UUO (PTYUUO 11,)   109
PTWRS9 UUO (PTYUUO 12,)   110
PTY echoing   96
PTY line characteristics   111
PTY line characteristics, initial
   96
PTY line numbers   96
PTYGET UUO (PTYUUO 0,)   100
PTYJOB   365
PTYLIN bit (4000,,0--line
   characteristics)   77
PTYREL UUO (PTYUUO 1,)   101
PTYs   96
PTYs doing display output   115
PTYUSE bit (200,,0--line
   characteristics)   77
PTYUUO UUO (UUO 711)   98
PTYUUOs to TTYs   99
PTYWAK bit (400,,0--line
   characteristics)   77, 105
push-down stack overflow   207,
   233
pushing I/O channels   47
queue names and numbers   367
RAID   260, 364
random access to files   51
re-edited line, activation
   character of   91, 125
re-edited line, number of
   characters in   83
re-editing lines with PTLOAD
   113
Read-Alter (RA) mode   35
reading data   38
REAPRV bit (40000,,0--privileges)
   178
REASSI UUO (CALLI 21)   46
record offset feature   279, 282
REENTER command   364
reference date for disk files
   278
RELEAS UUO (UUO 071)   45, 327
REMAP UUO (CALLI 37)   151
RENAME UUO (UUO 055)   34, 307
RENAMEs, long block   278
RESCAN UUO (TTYUUO 10,)   79
RESET UUO (CALLI 0)   250
RFCR bit (100000,,0--IMP
   connection status)   318
RFCS bit (200000,,0--IMP
   connection status)   318
RLEVEL UUO (CALLI 400054)   182
RMAR   291
ROBTPD bit (40,,0--line
   characteristics)   77
RSET bit (0,,400--IMP I/O status)
   318
RUN bit (400000,,0--job status)
   185
RUN UUO (CALLI 35)   252
RUNMSK UUO (CALLI 400046)   275
RUNTIM UUO (CALLI 27)   170
saving and restoring I/O channels
   47
SAVJDA bit (0,,400000--job
   status)   185
SDEAD1 bit (0,,20000--job status)
   185
SDEADIN bit (0,,40000--job
   status)   185
second segments   SEE upper
   segments
SEGNAM UUO (CALLI 400037)   161
SEGNUM UUO (CALLI 400021)   162
λ¬'∃∂!%,↓ESh@ d``X0`Z[aISmSY∃OKfR4∀@@@Dnp~∃M∂'∪hA++≡Qπβ→1∩@h`@`ddR@@dnP~∃'9λA++<@Q≠β%_@`X$@@@bdh~∃g∃emSG∀AYKm∃X@@@DpbX@Dpd~∃M)βπPA++≡Q))3U+≡@bTXR@@ph~∃M)π%⊂A++≡Qπβ→1∩@h`@`nfR@@bn\~∃'Q		(AU+≡@Q
β→→∩dR@@dl`~)')→%≤A++<@Q))e++≡@\XR@@np~∃M)≥β4A++≡Qπβ→1∩@h`@``dR@@dnL~∃'Q≥β~AU+≡@Q
β→→∩hfR@@bnl4∃')9~dA+U≡@Qπ¬→→∩@P```fXR@@@Djr~∃M)!∨XA++≡Qπβ→1∩@fd$@@@dLf~∃'∃)!$d↓++≡@!πβ→→$@h``@jdR@@bpp4∃')A%≡A+U≡@Qπ¬→→∩@P```d@R@@@Djp~∃M)!%XA++≡Qπβ→1∩@h`@`llR@@bnd~∃'Q')&AU+≡@QU+≡@`X`R@@jn~∃M)+/@A++≡Qπβ→1∩@fl$@@@bTl~∃'≥≥1(↓ESh@ hXX`4[→↓+'($@@@fHj~∃'!AESP@Ph`@`XX`4[U←D↓giCiUfR~∀@@bpT~∃gS5kYCi%]NA+U∨f@@djj~)gSqE%hAGQ¬eCGi∃dAG←⊃Kf@@flp~)'∪1¬%(AeKAeKgK9iCiS=\@@@Lld~∃M↔!⊃∪4A++≡Q≠β∪0@hXR@@d`D~∃'↔A≠
A+U≡@Q≠¬∪_@f0R@@@H``~∃M↔!'8A++≡Q≠β∪0@jXR@@brT~∃'→∃ A+U≡@Qπ¬→→∩@LbR@@dhr~)'→-∃_A++<@Qπβ1→∩@h@``hh$@@@b`b~∃'9β↔&↓++≡@!πβ→→$@h``@lhR@@r`~)'≥β-.A++<@Qπβ1→∩@h@``lf$@@@r@~∃'≥-/β(A	Sh@PH````@XX`Z5))2A$←≡~∀@Agi¬ikfR@@dpL~∃g←U]HAg=keGKL@@@bPh~∃g=k]HAMsgiK4X@h[
QC]]∃X@@@Lbf~∃MaCGK]CdAEUii←]L@@@d@dX@dXb~∃gACGKo¬dAYKYKXXA∃qKGkQS]NAU+∨fA¬h~∀@@d`d4∃gaC
KoCd↓[←IJ@@d`H~∃ga¬GKoCHA[←IUYKfX↓WSYY%]N@@d`h~)'!π¬I⊗AESP@Pb`@XX`Z5YS]J4∀@@A
QCeC
iKeSMiSGf$@@@n\~∃'!
/β$AU+≡@QU+≡@`PfR@@d`h~)'!π/≥≡A++<@Qπβ1→∩@h@```f$@@@d@j~∃gAKGSC0ACGi%mCiS=\A[←⊃J@@@\nX@pP~∃'!]¬+(AU+≡@Q
β→→∩h```@`R@@dlb~)'!2AU+≡@Q
β→→∩hdR@@dnj4∃'%πXA++≡Q≠β∪0@dXR@@br`~∃''¬-
AG=[[C]⊂@@@bPr~∃'M→!%,↓ESh@ b``X0`Z[aISmSY∃OKfR4∀@@@Dnp~∃MiC]M=eHA+U∨f@@n~∃'Qβ%(A
←[[C9H@@@Llh~∃M)β)≡↓++≡@!++≡@@lbR@@jr~)giCiUfAo←IHXAI∃mSGJ↓∩←≡@A'
↓∩←≡~(@@AgQCikf↓o←eH4∃')βQ4A++<@Q++<@`lf$@@@j`~∃'+A¬)&A	Sh@P@XXbZ5')β
(AM←UeiP~(@@Ao=eHR@@ph~)'+!π
$AESP@P`X0dZ['∃)βπ(↓M←keQP~∀@Ao←e⊂R@@@`h~∃'U!%
↓ESh@ `XXb@``Z[1!(A∩=≡~∀@AgiCQkfR@@dpj4∃'+!Mπ~AE%h@P`0XhZ[M)βπPAM←kIiP~∀@Ao←IHR@@ph~∃M/β AU+≡@Q
β→→∩h```@hR@@djb~)'/∪)
⊂A++<@Qπβ1→∩@d@R@@@Dpl~∃M/ AE%h@Pd@``XX@Z[U←λAgiCQkfR~(@@@b`j~∃'e≥εAE%h@Pd@```X0`Z[)Q2A∩←<~∀@@↓giCiUfR@@dpf~)'3'	∃,AESP@P`X0b``Z5GQC]9KX~∀@Agi¬ikfR@@l`4∃gsgQKZAI¬iJAM=e[Ch@@blT~∃)¬a!≥λA	Sh@PD`XX`4[YS]∀~∀@@↓GQCe¬GiKe%giSGLR@@@\n~∃i∃e[S]¬Yf@@↓'
AQ)3f~)iKe[%]←Y←≥rAS\↓iQSf↓[C]k¬X@@@`~∃)∪5$A+U≡@Qπ¬→→∩@HdR@@bln~))→↔!I,AESP@Pb`0X`Z[AeSmS1KOKf$~∀@@bnp~))→↔%9∞AESP@PbX0`Z[Y%]J~∀@AGQ¬eCGi∃eSgi%GfR@@nn~))≠β$@@dp`X@drD~∃)≠<AEShP`XXH``Z[%≠ A∩=≡Agi¬ikfR4∀@@@Lbp~∃Q≠!π∨HA++≡Qπβ→1∩@hh$@@@dTf~∃)5!π%λ↓++≡@!πβ→→$@h``D`fR@@djh4∃)∨∪@AEShPb``@`XX`4[))2↓∩←≡~(@@AgQCikf$@@@d`f~∃)A≠∨≤A	Sh@PP``XX@Z[))dA∩←≡4∀@@AMiCikLR@@@Hpf~∃Q%!∃8A++≡Qπβ→1∩@dl$@@@d\j~∃)I!'(↓++≡@!πβ→→$@djR@@dnT~∃))
β→_@@lr~)))%¬λA++<@Q))e++≡@DlXR@@pj~)))2@@dpf4∃))2↓KGQ←%]N@@lnX@dh~∃)Q2A∩←<@@@lX~∃))dA∩←≡↓giCiUfAo←IH@@@XjX@d`f~∃)Q2AS]AkhAEUMMKd0AaKK-S]NA¬h@@@d`~∃)Q2AS]AkhAEUMMKeLXAGY∃CeS]≤@@@p@~∃))dAS]aUhXA→_AS]g∃eiS←8@@@l\~∃))dAYS]∀AGQCICGiKISgiS
f@@@\n~∃)Q2AYS9JA]k5EKdX↓MS]I%]N@@nn~∃Q)2A←Uiakh↓EkMM∃dXAG1KCeS9N@@@`b~∃)Q2A++=fXA[%gGKY1C]K←Uf@@@`n~∃)Q2Aβ%I∨.AC9HA))dA≥≡A¬%%∨.@@nn4∃))2↓π⊃≡↓C]HAQ)2A≥<Aπ⊃<@@@n\~∃))dA
∪→0AC]H↓))2A9≡A
∪1_@@@\n~∃)Q2A
+1_AC]⊂A))2↓≥≡A
U→_@@nn~∃Q)2A)¬∧AC]⊂A))2↓≥≡A)¬∧@@@\n~∃)Q2XAa!sgSG¬XA]C5JA←L↓CiiC
QKH~(@@@rT~∃))dXAgK9IS]N↓BA[KMgCOJ↓i↑AB@@pp0~∀@@pr~∃Q)3	)AEShPd``@XX`Z5))2A$←≡~∀@Agi¬ikfR@@dpL~∃))e
∪_A	Sh@PD````@XX`Z5YS]J4∀@@A
QCeC
iKeSMiSGf$@@@n\~∃))e⊃→λA	Sh@PD````@XX`Z5))2A$←≡~∀@Agi¬ikfR@@dpL~∃))IOS UUO (CALLI 400014)   65
TTYIOW bit (400000,,0--TTY I/O
   status)   283
TTYJOB UUO (CALLI 400113)   93
TTYMES UUO (CALLI 400047)   88
TTYSKP UUO (CALLI 400116)   92
TTYTAB   365
TTYUUO UUO (UUO 051)   70
TV cameras   315
UDP unload light   331
UDP: new disk-style usage   277
UDP: old-style usage   305
UDP: user disk pack   304
UDPPRV bit (10000,,0--privileges)
   178
UDSD bit (0,,100--DTA I/O status)
   295
UFBCLR UUO (CALLI 400012)   238
UFBERR UUO (CALLI 400060)   246
UFBGET UUO (CALLI 400010)   236
UFBGIV UUO (CALLI 400011)   237
UFBPHY UUO (CALLI 400055)   243
UFBSKP UUO (CALLI 400056)   244
UFDs   18, 277
UGETF UUO (UUO 073)   54, 326
UINBF UUO (UUO 704)   28
understanding this manual   8
unit number of a device   64
UNLOCK UUO (CALLI 400077)   259
UNPURE UUO (CALLI 400102)   157
unused opcodes   3
UOUTBF UUO (UUO 705)   29
UPGIOT UUO (UUO 703)   130
UPGMVE UUO (UUO 713)   138
UPGMVM UUO (UUO 714)   137
UPGPRV bit (4000,,0--privileges)
   178
upper segments   147
upper segments, making and
   killing   149
upper segments, protection keys
   of   148, 158
upper segments, simulated   188
upper segments, status of   155
upper segments, write protecting
   148, 156
user disk pack (UDP)   304
user interrupt system   SEE
   interrupts, user
user level   208
user UUOs   6
USET pointer   282
USETI UUO (UUO 074)   52, 324
USETO UUO (UUO 075)   53, 325
USKIP UUO (CALLI 400041)   268
USRB bit (100,,0--TTY I/O status)
   283
UTPCLR UUO (CALLI 13)   297
UUO mnemonics   4, 187
UUO trapping   6
UUOs   3
UUOs at spacewar level   202
UUOs by number   369
UUOs, extended   4
UUOs, obsolete   265
UUOs, simulating   255
UUOs, user-defined   6
UUOSIM UUO (CALLI 400106)   255
UWAIT UUO (CALLI 400034)   215
VDSMAP UUO (CALLI 400070)   143
vectors, XGP   288
video switch   142
voder: the voice synthesizer
   329
voice synthesizer (voder)   329
WAIT UUO (CALLI 10)   42
WAKEME UUO (CALLI 400061)   256
wakeup mask, interrupt-wait   227
WHO UUO (CALLI 400112)   180
WIPEJD bit (0,,200000--job
   status)   185
word count computation   16
WRCV UUO (MAIL 1,)   197
writing data   40
WRTPRV bit (20000,,0--privileges)
   178
Xerox Graphics Printer (XGP)
   286
XGP character mode   288
XGP escapes   288
XGP vectors   288
XGP video mode   287
XGP: Xerox Graphics Printer   286
XGPPRV bit (2,,0--privileges)
   178
XGPUUO UUO (CALLI 400075)   293
XLINE   288, 291
XON bit (2,,0--line
   characteristics)   77
XPARMS UUO (formerly CALLI
   400103)   275
Y-position of line editor   126